两个字典列表的交集?

2024-05-16 19:37:30 发布

您现在位置:Python中文网/ 问答频道 /正文

this问题类似,我想知道两个字典列表之间的交集。在

其他问题询问如何在列表中获得字典的交集:

>>> dicts = [dict(a=3, b=89, d=2), dict(a=3, b=89, c=99), dict(a=3, b=42, c=33)]

解决方案是:

^{pr2}$

然而,我想知道如何得到两个字典列表的交集,以及如何获得内部字典的交集。在

如果我有:

>>> dicts1 = [dict(a=3, b=89, d=2), dict(a=3, b=89, c=99), dict(a=3, b=42, c=33)]
>>> dicts2 = [dict(a=3, b=89, d=2), dict(a=1, b=89, c=99), dict(a=0, b=42, c=33)]

我想要

{a=3m, b=89, b=42}

打印并不是因为它出现在dicts1的所有字典中,而是因为它发生在dicts1和dict2的字典中。我不在乎每个数组的位置。只是它发生了。在


Tags: 列表字典数组解决方案thisdictdictspr2
1条回答
网友
1楼 · 发布于 2024-05-16 19:37:30

这样做怎么样(注意,如果你有一个固定的键列表,你不需要第一行):

keys = set([y for x in dicts1 for y in x.keys() ] + [y for x in dicts2 for y in x.keys() ])

for key in keys:
    valsDicts1 = set([x[key] for x in dicts1 if key in x])
    valsDicts2 = set([x[key] for x in dicts2 if key in x])
    print key, list(valsDicts1 & valsDicts2)

打印示例:

^{pr2}$

显然,如果你不想打印它,对最后一行做些别的事情。在

相关问题 更多 >