使用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()返回特殊的可迭代类- 分别为acollections.abc.KeysView和a collections.abc.ValuesView。第一个继承__eq__自的方法set,第二个使用默认值object.__eq__测试对象身份。
dict.keys()
dict.values()
collections.abc.KeysView
collections.abc.ValuesView
__eq__
set
object.__eq__