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

为何Python解释器将2.0与2视为相同字典键并返回2对应值?

Python字典中2和2.0被视为同键的原因

先看你给出的代码:

def func():
    d = {1: "I", 2.0: "love", 2: "Python"}
    return d[2.0]
print(func())

运行后输出Python而非预期的love,核心原因在于Python字典判断键是否重复的规则:

  • 字典判断两个键是否为同一个,要同时满足两个条件:值相等(==比较为True),且哈希值(hash()计算结果)相同。
  • 对2和2.0来说,2 == 2.0返回True,同时hash(2)和hash(2.0)的结果也是一致的,所以它们会被字典认定为同一个键。
  • 字典在创建时,如果出现重复键,后面的键值对会直接覆盖前面的。所以2: "Python"会覆盖之前的2.0: "love",不管你用d[2.0]还是d[2]去取值,拿到的都是最后被写入的Python。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:55:19