gpt4 book ai didi

python - 将具有相同哈希值的两个键放入字典中

转载 作者:太空狗 更新时间:2023-10-29 17:33:07 24 4
gpt4 key购买 nike

>>> one_decimal = Decimal('1')
>>> one_complex = complex(1,0)
>>> d = {one_decimal: '1D', one_complex: '1C'}
>>> len(d)
2
>>> map(hash, d)
[1, 1]

上面,我创建了一个哈希冲突的字典,并且占用了两个槽。

>>> d[1]
'1D'
>>> d[1+0j]
'1C'

如何处理整数 1 的 getitem?索引如何设法为复杂的文字索引解析正确的值?

Python 2.7.12/Linux。

最佳答案

作为accepted answer @CoryKramer 提到的状态,哈希的相等并不意味着对象的相等。 Python 字典可以包含任意数量的具有相等哈希值的元素,只要对象本身不相等即可。

对您的问题的简短回答可能是 complex 类型的实现在 Python 库中从 2.7 开始有点不完整。正如@wim 指出的那样,使用 == 比较 intcomplex 效果很好,但是比较 Decimalcomplex 没有。由于比较 one_decimal == one_complex 将始终返回 False 因为它们的类型,它们可以在 Python 2.7 中存在于同一个字典中。

此问题已在 Python 3 中修复。我正在 3.5 中进行试验,其中 one_decimalone_complex 相等。运行相同的代码段后,字典包含键 one_decimal 下的 one_complex 的值,正如预期的那样(第一个键,最后一个值)。

长话短说

这是 Py2.7 的 complex 类型中的一个错误。在 Py3 中修复。

关于python - 将具有相同哈希值的两个键放入字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40225520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com