Python 两个整数具有相同的散列

Python 两个整数具有相同的散列,python,python-3.x,python-2.7,dictionary,hash,Python,Python 3.x,Python 2.7,Dictionary,Hash,我在研究字典,寻找方法避免由于潜在的哈希冲突()而导致的get/set/delete操作的最坏情况O(n)时间复杂性,并了解到整数总是哈希到自己,因此如果使用int作为字典的键,冲突不应该成为问题。然而,我在我的终端上测试了这个,这是我看到的: >>> print hash(4), hash(3), hash(2), hash(1), hash(0), hash(-1), hash(-2), hash(-3), hash(-4) 4 3 2 1 0 -2 -2 -3 -4 &g

我在研究字典,寻找方法避免由于潜在的哈希冲突()而导致的get/set/delete操作的最坏情况O(n)时间复杂性,并了解到整数总是哈希到自己,因此如果使用int作为字典的键,冲突不应该成为问题。然而,我在我的终端上测试了这个,这是我看到的:

>>> print hash(4), hash(3), hash(2), hash(1), hash(0), hash(-1), hash(-2), hash(-3), hash(-4)
4 3 2 1 0 -2 -2 -3 -4
>>> hash(-1) == hash(-2)
True
这很奇怪,
hash(-1)==-2
hash(-2)=-2
所以我在dict中尝试了它:

>>> d = {-3: 'a', -2:'b', -1:'c'}
>>> print d
{-1: 'c', -3: 'a', -2: 'b'}
好吧,至少哈希冲突处理得很好

为什么有两个整数具有相同的哈希值?

前面的问题回答了这个问题!这里是Tl;dr版本:

散列值-1是保留的(用于标记C中的错误) 实施)。如果哈希算法生成这个值,我们只需 使用-2代替


现在一切都有了意义。谢谢很高兴我能帮忙!