So Listen sind unhashable:Was macht Listen unzerlegbar?
>>> { [1,2]:3 }
TypeError: unhashable type: 'list'
Die folgenden page gibt eine Erklärung:
Eine Liste ist ein veränderlicher Typ und als Schlüssel in einem Wörterbuch (es könnte sein kann nicht verwendet ändern - Platzieren Sie den Schlüssel nicht mehr in der internen Hash-Tabelle des Wörterbuchs.
Ich verstehe, warum es nicht wünschenswert ist, veränderbare Objekte als Wörterbuchschlüssel zu verwenden. Allerdings wirft Python die gleiche Ausnahme, auch wenn ich einfach versuche, eine Liste mit Hash (unabhängig von Wörterbucherstellung)
>>> hash([1,2])
TypeError: unhashable type: 'list'
Does Python tut dies als eine Garantie dafür, dass änderbare Typen nie als Dictionary-Schlüssel verwendet werden? Oder gibt es einen anderen Grund, warum veränderbare Objekte unmöglich zu hacken sind, unabhängig davon, wie ich sie verwenden möchte?
'hash()' ruft einfach die Methode '__hash__' des Objekts auf, und genau das ist es, was dicts macht. –
Was * willst du mit dem Hash machen? Die Motivation ist, dass sich der Hash-Wert eines Objekts nicht ändern sollte, und gleiche Objekte sollten im Allgemeinen denselben Hashwert haben. – geoffspear