python - 为什么 OrderedDict 的值不相等?

标签 python python-3.x dictionary ordereddictionary

使用 Python 3:

>>> from collections import OrderedDict
>>> d1 = OrderedDict([('foo', 'bar')])
>>> d2 = OrderedDict([('foo', 'bar')])

我想检查是否相等:

>>> d1 == d2
True
>>> d1.keys() == d2.keys()
True

但是:

>>> d1.values() == d2.values()
False

你知道为什么值不相等吗?

我已经使用 Python 3.4 和 3.5 对此进行了测试。

<小时/>

在这个问题之后,我在 Python-Ideas 邮件列表上发布了更多详细信息:

https://mail.python.org/pipermail/python-ideas/2015-December/037472.html

最佳答案

在 Python 3 中,dict.keys()dict.values() 返回特殊的可迭代类 - 分别是 collections.abc.KeysView > 和一个collections.abc.ValuesView。第一个继承了 set__eq__ 方法,第二个使用默认的 object.__eq__ 来测试对象身份。

关于python - 为什么 OrderedDict 的值不相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56276317/

相关文章:

python - 如何将格式为 'dd/mm/yyyy %H:%M' 的 Pandas 数据框日期列转换为 'yyyy/mm/dd %H:%M'

scala - 针对 Scala Map 类型的模式匹配

python - 编写标准差函数

python - 改变随机森林中每棵树的权重

python - 如何从picamera(python,opencv)中提取数组中的图像

python - 如何使用 while 循环编写有效的游戏代码测试?

python - 带有列表的字典自定义相等性检查

django - 在 Django 中进行的 API 中的异步调用

python - 如何从字典中减去值

python - 如何获取包含不同形状张量的 TensorArray 中的值