Python字典中用True/False与0/1作键为何出现覆盖问题?
问题原因解析
这是因为Python中True和整数1满足相等关系且哈希值相同,字典会将它们判定为同一个键。
字典的键具有唯一性,当你先后定义1: 'apple'和True: False时,由于这两个键在字典的判定逻辑里是同一个,后定义的键值对会直接覆盖先定义的,所以最终1对应的取值变成了False。
你可以通过以下代码验证这个特性:
print(True == 1) # 输出:True print(hash(True) == hash(1)) # 输出:True
而换成其他数字(比如2)时,由于True和该数字既不相等,哈希值也不同,字典会将它们视为不同的键,因此不会出现覆盖情况,能得到你预期的结果。
内容的提问来源于stack exchange,提问作者Mberato
相关产品推荐
相关产品推荐

