当我这样做时:
>>> d={True:'yes',1:'no',1.0:'maybe'}
>>> d
我收到的输出为:
>>> {True:'maybe'}
不仅我的一些密钥被删除了,而且它所持有的值也被改变了。
为什么True优先于另一个bool键?
答案 0 :(得分:13)
三个键True,1和1.0相互比较,并且在Python REPL中都具有相同的hash(try hash(True)
,hash(1)
和hash(1.0)
,所以它们都对应于字典中的相同插槽。要设置的最后一个值获胜 - 可能'在这种情况下。
请注意,如果密钥不相等,即使它们散列到字典中的同一个插槽,它们也会被单独存储。