与这个问题类似,我想知道两个字典列表之间的交集。
其他问题询问如何获取列表中字典的交集:
>>> dicts = [dict(a=3, b=89, d=2), dict(a=3, b=89, c=99), dict(a=3, b=42, c=33)]
解决方案是:
dict(set.intersection(*(set(d.iteritems()) for d in dicts)))
但是我想知道如何获取两个字典列表的交集而不是获取内部字典的交集。
如果我有:
>>> 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 中的字典中。我不在乎每个数组的位置。只是它发生了。