2016-11-19 2 views
0
data_keys=list(set(data_keys)) 
print data_keys 

Ich habe versucht, die doppelten Schlüssel in dieser Liste zu entfernen, und ich habe diesen Fehler gefunden.Beim Entfernen der Duplikate habe ich diesen unbehebbaren Typ: 'list' error !!! TypeError: nicht hashbarer Typ: 'list'

Ich suche eine einfache Lösung dafür.

Fehlermeldung:

data_keys=list(set(data_keys)) 
TypeError: unhashable type: 'list' 
+0

Sie sollten zeigen, was 'data_keys' ist. –

+0

Offensichtlich enthält 'data_keys' Listen, die nicht in einem Set platziert werden können. Oder als Schlüssel in einem Wörterbuch verwendet werden. – jonrsharpe

Antwort

2

Weil Sie Artikel von list Typ in Ihrem data_list haben. set() kann nur mit hashbaren Objekten verwendet werden, und die Liste ist nicht hashbar. Zum Beispiel:

>>> data_list = [1, 2, 3] # All numbers, works fine 
>>> set(data_list) 
{1, 2, 3} 


>>> data_list = [1, 2, 3, [1, 2, 3]] # Has `list` as an element 
>>> set(data_list)      # Raises `TypeError` 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unhashable type: 'list' 

Um diese Arbeit zu machen, können Sie die verschachtelte Liste tuple als konvertieren:

>>> data_list = [1, 2, 3, (1, 2, 3)] 
#      ^It is `tuple` instead of `list` 
>>> set(data_list)  # works fine 
{1, 2, 3, (1, 2, 3)} 

Für weitere Informationen können Sie lesen: Otto's Answer to "Python: Add list to set?"

+0

Also was wird die Lösung sein. Ich habe eine lange Liste, so dass es eine schwierige Aufgabe ist –

+0

Ich habe bereits am Ende meiner Antwort hinzugefügt. Verwenden Sie 'tuple' anstelle von' list' als Elemente für 'data_list' –

+0

und konvertieren Sie Ihre große Liste in ein Tupel Verwenden Sie' tuple (your_list) 'so wäre es:' data_keys = list (set (tuple (data_keys))) ' –

Verwandte Themen