[PYTHON] Verhalten, wenn 0, 1, False, True für die Diktiertaste verwendet wird

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

Verhalten, wenn 0, 1, False, True für die Diktiertaste verwendet wird
[Für Anfänger] Unerwartetes Verhalten, wenn beim Festlegen des Pfads in Python "\" enthalten ist
Importieren Sie audit.log in Splunk und überprüfen Sie das Verhalten beim ersten Start von Splunk.
Wenn sich eine Zeichenfolge einer bestimmten Reihe im Schlüssel des Wörterbuchs befindet, wird die Zeichenfolge in den Wert des Wörterbuchs konvertiert.
So drehen Sie die for-Anweisung, wenn das Wörterbuch mehrere Werte für einen Schlüssel enthält
Verwendung von __dict__ in Python
Was ist die Schnittstelle für ...
Überprüfen Sie das Verhalten beim Zuweisen von Python
[Python] Was ist der sortierte Schlüssel?
Wofür ist der Python-Unterstrich (_)?
Warum wird Kreuzentropie für die Zielfunktion des Klassifizierungsproblems verwendet?