哈希表应该是高性能的映射,并且因为 Python dicts 是用哈希表实现的,所以它们也是高性能的。但是在查看负整数的哈希值时,我遇到了一个奇怪的结果。
>>> for i in range(7):
... print hash(i-4)
...
-4
-3
-2
-2
0
1
2
但这显然对dicts没有影响:
>>> d = dict()
>>> d[-1] = 'foo'
>>> d[-2] = 'bar'
>>> d
{-2: 'bar', -1: 'foo'}
为什么会发生这种情况,为什么我使用它们时不会影响 dicts?