Lou*_*uis 5 python set frozenset
我的理解是散列需要包含可散列对象的两个不同的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
Run Code Online (Sandbox Code Playgroud)
您似乎偶然发现了两个frozenset
具有相同哈希码和不同内容的 s。这并不奇怪,因为哈希码的特性是保证它们对于相等的对象是相等的,而对于不相等的对象可能是不同的。
来自 Python 文档:
哈希(对象)-> 整数
返回对象的哈希值。具有相同值的两个对象具有相同的哈希值。反过来不一定正确,但很有可能。
最简单的例子是数字-1
,-2
它们在 python 中具有相同的哈希码:
>>> print(hash(-1))
-2
>>> print(hash(-2))
-2
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
569 次 |
最近记录: |