比较某些两个元素元组的hash es >>
for i in range(11): print(i, hash((i,i)) == hash((-i,-i)))
我希望在
True
时获得i==0
,在其余时间获得False
。我很惊讶地看到这个:
0 True 1 False 2 True 3 True 4 True 5 True 6 True 7 True 8 False 9 True 10 True
为什么会这样?
AFAIK与this问题不同,因为它与顺序无关,而与值本身有关。
比较范围(11)中i的一些两个元素元组的哈希:print(i,hash((i,i))== hash((-i,-i)))我希望在以下情况下获得True i == 0,其余为False。令我惊讶的是:...
即使良好的哈希算法努力使哈希值保持一致,也永远不能保证它们没有冲突。 Python 3.8对哈希算法进行了改进,尤其是对于元组,因此与Python 3.7相比,该问题现在在Python 3.8中更难以重现。
供以后参考,我最终使用此代码进行一致的元组哈希: