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

Python中负整数-1与-2的哈希值为何相同?

为何Python中-1和-2的哈希值同为-2?

这是Python整数哈希机制的故意设计,核心原因是避免哈希表的特殊值冲突:

  • 对于绝大多数整数,Python的hash()函数直接返回整数本身,比如hash(2)返回2,hash(-3)返回-3。
  • 但-1是个例外:很多哈希表实现会用-1作为特殊标记(比如表示“查找失败”“空槽位”),如果hash(-1)返回-1,会干扰这些底层逻辑。因此Python特意将hash(-1)的结果设为-2。
  • 而hash(-2)的结果就是-2(遵循负数哈希为对应正数哈希的相反数的规则,hash(2)=2,所以hash(-2)=-2),这就导致了这两个不同整数的哈希值出现冲突。

需要明确的是,哈希冲突本身是允许的——哈希函数只要求“相等的对象必须有相同哈希值”,反之哈希值相同的对象不一定相等,Python的字典等结构会在哈希冲突时进一步比较对象本身来区分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:21:35