python - 对象具有相同的哈希值,字典无法识别为相同

标签 python dictionary hashtable

我有两个代表同一个对象的对象。我什至保证他们有相同的哈希值。我仍然从字典中得到一个错误:

>>> hash(one)
1098414562
>>> hash(one+zero)
1098414562
>>> a={one:1}
>>> a[one+zero]

Traceback (most recent call last):
  File "<pyshell#25>", line 1, in <module>
    a[one+zero]
KeyError: {{|}|}

我还需要做些什么来确保字典将其重新识别为相同的键?

最佳答案

要妥当hashable dict 键,对象还必须定义 __eq__()__cmp__()。它们必须比较相等才能被识别为相同的 key 。

如果对象具有相同的哈希值,但不比较相等,则假设存在哈希冲突,并且它们分别进入同一个哈希桶。

当通过哈希查找一个对象时,匹配的哈希桶中的所有对象都与它进行比较,如果没有相等的,则为 KeyError。

关于python - 对象具有相同的哈希值,字典无法识别为相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17396076/

相关文章:

python - 无法在 Qt 应用程序内重绘 matplot

python - 将变量转换为字典

python - 无法将字典发送到 RabbitMQ(不可散列类型 : 'slice' )

loops - 在循环宏中使用照应绑定(bind)

java - 变量名与哈希函数有什么关系?

JAVA Hashtable 查找最大值

python - 如何在 flask 项目中运行单元测试?

python - Scrapy 调用另一个 Url

python - 如何使用 Python 在邮件正文中建立链接

java - 流式生成带有整数键和值集的映射