我正在研究字典,并寻找方法来避免由于潜在的哈希冲突(src)而导致获取/设置/删除操作出现最坏情况的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
都很奇怪,所以我在字典中尝试过:
>>> d = {-3: 'a', -2:'b', -1:'c'}
>>> print d
{-1: 'c', -3: 'a', -2: 'b'}
好的,至少哈希冲突得到了正确处理。
为什么有两个具有相同哈希值的整数?