2017-02-01 4 views
0

ich folgendes haben: Ich sehe das folgende Objekt hat __hash__ AttributPython-Liste als DIKT Schlüssel

a=[1,2,3] 

>>> dir(a) 
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delsli 
ce__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getit 
em__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', 
'__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__r 
educe__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__' 
, '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'a 
ppend', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort' 
] 

>>> dict1={a:'55'} 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unhashable type: 'list' 

Q: obwohl es __hash__ Attribut hat, kann es immer noch nicht als key.Why verwendet werden?

+1

Mögliches Duplikat von [Python, TypeError: nicht hashbarer Typ: 'list'] (http://stackoverflow.com/questions/19371358/python-typeerror-unhashable-type-list) –

+1

Hinweis: 'print (a .__ hash__) ' –

+0

Die Frage, die Sangeon Park verbunden ist, ist keine genaue Dupe dieser Frage, aber ich denke, dass es viele sehr relevante Informationen enthält. Weitere Informationen finden Sie in den ['__hash__' -Dokumenten] (https://docs.python.org/3/reference/datamodel.html#object.__hash__). –

Antwort

3

Haben Sie versucht, den Wert des Attributs zu betrachten?

>>> print(a.__hash__) 
None 

Nur weil etwas hat ein __hash__ Attribut bedeutet nicht, es ist hashable; Das Attribut __hash__ muss aufrufbar sein, um es tatsächlich zu hashen (anstatt z. B. eine Ausnahme auszulösen).

Verwandte Themen