Ein Hashable-Objekt kann für den Python-Diktatschlüssel verwendet werden, und der Hashwert wird als Schlüssel verwendet.
Pythons bool
Typ ist als Unterklasse des int
Typs implementiert, wobei False
den gleichen Hashwert wie 0
und True
den gleichen Hashwert wie 1
hat.
>>> hash(0)
0
>>> hash(False)
0
>>> hash(1)
1
>>> hash(True)
1
Nun wollen wir sehen, was passiert, wenn wir "0", "1", "Falsch", "Wahr" als Wörterbuchschlüssel verwenden.
>>> d = { 0: 'zero', True: 'true' }
>>> d
{0: 'zero', True: 'true'}
>>> d[0]
'zero'
>>> d[True]
'true'
>>> d[False]
'zero'
>>> d[1]
'true'
Ich habe auch "False" und "1", die nicht im Wörterbuch enthalten sind. Da die Hashwerte gleich sind, handelt es sich um ein natürliches Verhalten.
Weisen wir es dem Wörterbuch zu.
>>> d
{0: 'zero', True: 'true'}
>>> d[False] = 'false'
>>> d[1] = 'one'
>>> d
{0: 'false', True: 'one'}
Der Schlüssel bleibt "0" und "Wahr" und die Werte wurden auf "Falsch" und "Eins" aktualisiert.
Es stellt sich heraus, dass der Schlüssel den Wert aus der ersten Zuordnung verwendet und der Wert der zuletzt zugewiesene Wert ist. Es war nicht überraschend, dass es ein interessantes Ergebnis war.
>>> d = { 0: 'Null', True: 'wahr', 1: 'einer', False: 'falsch'}
>>> d
{0: 'falsch', True: 'einer'}
Recommended Posts