神奇的字典键
创建字典
d = {}
d[5.5] = "Ruby"
d[5.0] = "JavaScript"
d[5] = "Python"
Output:
>>> some_dict[5.5]
"Ruby"
>>> some_dict[5.0]
"Python"
>>> some_dict[5]
"Python"
WTF
"JavaScript" 怎么不见了?
说明:
1.Python 字典通过检查键值是否相等和比较哈希值来确定两个键是否相同.
2.具有相同值的不可变对象在Python中始终具有相同的哈希值.
注意:
具有不同值的对象也可能具有相同的哈希值(哈希冲突).
>>> 5 == 5.0
True
>>> hash(5) == hash(5.0)
True
结论:
- 当执行 some_dict[5] = "Python" 语句时, 因为Python将 5 和 5.0 识别为 some_dict 的同一个键, 所以已有值 "JavaScript" 就被 "Python" 覆盖了.
- 这个 StackOverflow的 回答(https://stackoverflow.com/a/32211042/4354153) 漂亮的解释了这背后的基本原理.
看完记得点赞哦,笔芯
网友评论