[PYTHON] Comportement lorsque 0, 1, False, True est utilisé pour la clé dict

Les objets hachables peuvent être utilisés pour les clés dict Python et les valeurs de hachage sont utilisées comme clés. Le type «bool» de Python est implémenté comme une sous-classe du type «int», où «False» a la même valeur de hachage que «0» et «True» a la même valeur de hachage que «1».

>>> hash(0)
0
>>> hash(False)
0
>>> hash(1)
1
>>> hash(True)
1

Voyons maintenant ce qui se passe lorsque nous utilisons «0», «1», «False», «True» comme clés de dictionnaire.

>>> d = { 0: 'zero', True: 'true' }
>>> d
{0: 'zero', True: 'true'}
>>> d[0]
'zero'
>>> d[True]
'true'
>>> d[False]
'zero'
>>> d[1]
'true'

J'ai aussi «False» et «1» qui ne sont pas dans le dictionnaire. Étant donné que les valeurs de hachage sont les mêmes, il s'agit d'un comportement naturel.

Attribuons-le au dictionnaire.

>>> d
{0: 'zero', True: 'true'}
>>> d[False] = 'false'
>>> d[1] = 'one'
>>> d
{0: 'false', True: 'one'}

La clé reste «0» et «True» et les valeurs ont été mises à jour en «» faux »et« un ».

Il s'avère que la clé utilise la valeur de la première affectation et la valeur est la dernière valeur affectée. Sans surprise, ce fut un résultat intéressant.

>>> d = { 0: 'zéro', True: 'vrai', 1: 'un', False: 'faux'}
>>> d
{0: 'faux', True: 'un'}

Recommended Posts

Comportement lorsque 0, 1, False, True est utilisé pour la clé dict
[Pour les débutants] Comportement inattendu si "\" est inclus lors de la définition du chemin en Python
Importez audit.log dans Splunk et vérifiez le comportement lorsque Splunk est démarré pour la première fois.
Lorsqu'une chaîne de caractères d'une certaine série se trouve dans la clé du dictionnaire, la chaîne de caractères est convertie en valeur du dictionnaire.
Comment activer l'instruction for lorsqu'il existe plusieurs valeurs pour une clé dans le dictionnaire
Comment utiliser __dict__ en Python
A quoi sert l'interface ...
Vérifiez le comportement lors de l'attribution de Python
[python] Quelle est la clé triée?
À quoi sert le trait de soulignement Python (_)?
Pourquoi l'entropie croisée est-elle utilisée pour la fonction objective du problème de classification?