python - 如何: Compare dictionaries within lists

标签 python list dictionary compare

我想知道你是否可以帮助我。

我有两个包含字典的列表,在大多数情况下,这些键是相同的。请参阅下面的简要示例:

x1 = [{'a':1,'b':"cat"},{'a':2,'b':"parrot"},...]
x2 = [{'a':2,'b':"dog"},{'a':1,'b':"fish"},...]

现在我想比较基于键的值,即键 a,但是两个列表的长度并不总是相同的。如果有相应的字典,即 x1[0]['a'] == x2[1]['a'],则键 a 将始终出现在两个字典中。

我如何根据键 a 比较这些字典,以便我可以首先丢弃 x1 中没有出现在 x2 中的那些,反之亦然。然后判断某些值是否出现在两个词典中,然后将其记录在数据库中,这里不需要。

我当时的想法是将这些字典组合成一个基于键 a 的列表中的元组。然后遍历它并比较这些值。这可能不是最好的解决方法,所以如果您有更好的想法,请随意。 :)

[编辑。]

我没有把问题表述清楚,对不起。我希望做的是;第一:根据键 a 匹配字典。第二:忽略那些不匹配的(key a)。第三:比较键b。第四:根据b的比较更新数据库。

感谢所有回答的人。

我的回答是这样的:

“我认为列表组合可能会很好地构建一个包含来自 x1 的字典的元组,该字典对应于来自 x2 的字典,然后遍历每个元组比较键b 但我认为它可能太慢了。”

我认为这不是一个很好的方法。这就是我来这里的原因:)

提前谢谢你。

最佳答案

我不太明白你的比较,但我猜你想要的是

len(x1)==len(x2) and all(a['a']==b['a'] for (a, b) in zip(x1, x2))

或者,等效地(但效率较低),

[a['a'] for a in x1] == [b['a'] for b in x2]

关于python - 如何: Compare dictionaries within lists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20492614/

相关文章:

python - Cmake 将 python 编译到构建文件夹中

python - 基于两列合并两个 Dataframe

list - 如何使用Powershell在Sharepoint 2013中的默认列列表中选中复选框?

java - 如何迭代对象列表,传递给方法然后将返回值存储在数组列表中?

ios - 在 Swift 中使用 AnyObjects 对数组进行排序

python - 如何通过与条件匹配的值来过滤列表中的字典?

python - 我如何使用带有 python 的 cron 来使用谷歌驱动器?

Python继承——如何调用祖 parent 方法?

使用 purrr 重命名 tibbles 列表中的不同列

Python:字典列表理解实例数