Liste der Listen in Python

8

Ich habe eine Liste von Listen :

%Vor%

und ich möchte in eine Menge konvertieren, d. h. die Wiederholungslisten entfernen und daraus eine neue Liste erstellen, die nur die eindeutigen Listen enthält.

Im obigen Fall ist die erforderliche Antwort

%Vor%

Aber wenn ich set(mat) mache, gibt es mir einen Fehler

  

TypeError: nicht hashbarer Typ: 'list'

Können Sie bitte mein Problem lösen? Vielen Dank im Voraus!

    
Mayank Jain 22.10.2014, 18:07
quelle

3 Antworten

11

Da die Listen änderbar sind, können sie nicht gehashed werden . Am besten ist es, sie in ein Tupel zu konvertieren und so ein Set zu bilden.

%Vor%

Wir durchlaufen die mat , eine Liste nach der anderen, wandeln diese in ein Tupel um (was unveränderlich ist, also sind set s bei ihnen cool) und der Generator wird an die Funktion set gesendet.

Wenn Sie das Ergebnis als Liste von Listen haben möchten, können Sie dasselbe erweitern, indem Sie das Ergebnis von set Funktionsaufruf in Listen wie dieses

umwandeln %Vor%     
thefourtheye 22.10.2014, 18:11
quelle
4

Listen sind veränderbar und daher nicht hashbar. Verwenden Sie stattdessen Tupel

%Vor%     
inspectorG4dget 22.10.2014 18:09
quelle
2

@ thefourtheyes Antwort zeigt deutlich das Problem, mit dem Sie bei nicht-hashbaren Datentypen konfrontiert waren, und die Art und Weise, wie Sie sie umgehen können, sodass Sie einen Satz erstellen und Duplikate entfernen können. Dies sollte für die meisten Probleme ausreichen, aber Ihre Frage erneut lesen

  

Im obigen Fall lautet die erforderliche Antwort [[1,2,3], [4,5,6], [7,8,9]].

Wenn die Reihenfolge wichtig ist, müssen Sie OrderedDict

verwenden %Vor%     
Abhijit 22.10.2014 18:15
quelle

Tags und Links