Python字典打破了python的规律

时间:2018-06-15 04:07:44

标签: python dictionary

当我这样做时:

>>> d={True:'yes',1:'no',1.0:'maybe'}
>>> d

我收到的输出为:

>>> {True:'maybe'}

不仅我的一些密钥被删除了,而且它所持有的值也被改变了。

为什么True优先于另一个bool键?

1 个答案:

答案 0 :(得分:13)

三个键True,1和1.0相互比较,并且在Python REPL中都具有相同的hash(try hash(True)hash(1)hash(1.0) ,所以它们都对应于字典中的相同插槽。要设置的最后一个值获胜 - 可能'在这种情况下。

请注意,如果密钥不相等,即使它们散列到字典中的同一个插槽,它们也会被单独存储。