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