当关键字出现故障时比较字典列表



我有两个字典列表。

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

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

如果你想知道每个列表是否有相同的dict,即使dict元素在列表中可能不在相同的位置(正如你在评论中提到的(,你可以使用:

a = [{"name": "hello", "city": "xyz"},{"city": "rty", "name": "ert"}]
b = [{"name": "ert", "city": "rty"}, {"city": "xyz","name": "hello"}]
print(a == b)
print(sorted(a, key=lambda d: sorted(d.items())) == sorted(b, key=lambda d: sorted(d.items())))

输出:

False
True

我敢肯定你在某种程度上犯了一个错误。我和其他人得到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对象之间的相等性测试与常规字典一样,对顺序不敏感。

关于价值比较的文档是这样说的,这些dicts:就是这样

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

最新更新