我有两个代表同一个对象的对象。我什至保证他们有相同的哈希值。我仍然从字典中得到一个错误:
>>> 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/