You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 20:20:53