我的理解是,需要包含可哈希对象的两个不同的冻结集(不变的Python集)的哈希处理应导致两个不同的哈希值。为什么我在下面得到两个不同的冻结集的输出?
In [11]: a
Out[11]: frozenset({(2, -2), (2, -1), (3, -2), (3, -1)})
In [12]: b
Out[12]: frozenset({(4, -2), (4, -1), (5, -2), (5, -1)})
In [13]: hash(a)
Out[13]: 665780563440688
In [14]: hash(b)
Out[14]: 665780563440688
您似乎偶然发现了两个frozenset
具有相同哈希码和不同内容的。这并不奇怪,因为哈希码的性质是保证哈希对象对于相等的对象是相等的,而对于非相等的对象则可能是不同的。
从Python文档中:
哈希(对象)->整数
返回对象的哈希值。具有相同值的两个对象具有相同的哈希值。相反的情况不一定成立,但有可能。
绝对最简单的例子是数字-1
,-2
它们在python中具有相同的哈希码:
>>> print(hash(-1))
-2
>>> print(hash(-2))
-2
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句