具有相同哈希值的不同 python 个冻结集
Different python frozensets with same hash value
我的理解是,对需要包含可哈希对象的两个不同的 frozensets(不可变 Python 集)进行哈希处理,应该会导致两个不同的哈希值。为什么我得到以下两个不同 frozensets 的输出?
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 文档:
hash(object) -> integer
Return a hash value for the object. Two objects with the same value have
the same hash value. The reverse is not necessarily true, but likely.
最简单的例子是数字 -1
和 -2
,它们在 python:
中具有相同的哈希码
>>> print(hash(-1))
-2
>>> print(hash(-2))
-2
我的理解是,对需要包含可哈希对象的两个不同的 frozensets(不可变 Python 集)进行哈希处理,应该会导致两个不同的哈希值。为什么我得到以下两个不同 frozensets 的输出?
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 文档:
hash(object) -> integer
Return a hash value for the object. Two objects with the same value have the same hash value. The reverse is not necessarily true, but likely.
最简单的例子是数字 -1
和 -2
,它们在 python:
>>> print(hash(-1))
-2
>>> print(hash(-2))
-2