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