首页 > 解决方案 > 当键乱序时比较字典列表

问题描述

我有 2 个字典列表。

a = [{"name": "hello", "city": "xyz"},{"city": "rty", "name": "ert"}]
b = [{"city": "xyz","name": "hello"},{"name": "ert", "city": "rty"}]

上述两个列表是相等的。但是,如果我使用 进行比较==,它会给出False. 当键可能乱序时,如何检查两个字典列表之间的相等性?

标签: pythonpython-3.xlistdictionaryequality

解决方案


我很确定你以某种方式犯了错误。我和其他人得到True

>>> a = [{"name": "hello", "city": "xyz"},{"city": "rty", "name": "ert"}]
>>> b = [{"city": "xyz","name": "hello"},{"name": "ert", "city": "rty"}]
>>> a == b
True

这就是它应该做的。

关于OrderedDict说的文档(强调我的):

OrderedDict对象和其他Mapping对象之间的相等性测试像常规字典一样对顺序不敏感

关于值比较的文档说明了这一点,这些字典就是这种情况:

映射(的实例dict)比较相等当且仅当它们具有相等的(键,值)对。


推荐阅读