Python中使用bool作为字典键的异常行为问题
为什么Python 2.7中重复键的字典遍历只显示一个键?
这问题问到点子上了!核心原因其实是Python字典的键唯一性特性,咱们一步步拆解来看:
本质:字典不允许重复键,重复会被覆盖
Python字典的底层是哈希表结构,它要求所有键必须是唯一且可哈希的。当你创建字典时如果出现重复的键,后面的键值对会直接覆盖前面的条目,最终字典里只会保留最后那个重复键对应的内容。
第一个例子的真相
你写的第一个字典:{True:'a', True:'b'},在创建的瞬间就发生了覆盖——第二个True键直接替换了第一个,所以这个字典最终实际是 {True: 'b'}。遍历这个字典时,自然只会输出一个True。
第二个例子的对比
第二个字典{False:'a', True:'b'}里的False和True是两个不同的键(在Python里True等价于整数1,False等价于整数0,二者哈希值不同),所以不会发生覆盖,字典里完整保留了两个键值对,遍历的时候就会依次输出False和True。
直观验证一下?
你可以直接打印字典看看实际内容:
>>> print({True:'a', True:'b'}) {True: 'b'} >>> print({False:'a', True:'b'}) {False: 'a', True: 'b'}
这样就能一眼看到重复键被覆盖后的结果啦~
内容的提问来源于stack exchange,提问作者Wycee El
相关产品推荐
相关产品推荐

