You need to enable JavaScript to run this app. Python中定义字典后打印输出与定义内容不一致是什么原因?
优惠活动
大模型
产品
解决方案
定价
更多

Python中定义字典后打印输出与定义内容不一致是什么原因?

问题原因
  • Python 字典的键必须唯一,判定两个键是否重复的规则是:二者哈希值相等,且==比较结果为True。
  • 布尔类型是int的子类,True本质上对应整数值1,hash(True)和hash(1)结果相同,且1 == True返回True,因此字典会将1和True识别为同一个键。
  • 你定义字典时,先给键1赋值为"apple",后续又给同一个键(True)赋值为False,后面的赋值会直接覆盖前面的值,因此最终键1对应的值为False,"apple"被覆盖消失。
解决方法
  • 若确实需要同时保留数值1和布尔值True作为独立键,可将键转为字符串类型做区分:
pairs = {"1": "apple", "orange": [2, 3, 4],  True: False, None: "True"}

此时打印结果为{'1': 'apple', 'orange': [2, 3, 4], True: False, None: 'True'},符合预期。

  • 若业务场景不需要区分数值1和布尔值作为键,提前统一键的类型,避免出现等价的不同类型键即可。

内容的提问来源于stack exchange,提问作者Mohamed Amine

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 13:24:00