获取包含字典的2个列表之间的差异

12 浏览
0 Comments

获取包含字典的2个列表之间的差异

这个问题已经有答案了:

如何在Python中查找两个字典列表之间的差异

获取包含唯一条目的两个列表之间的差异

list1 = [{'key1': 'item1'}, {'key2': 'item2'}]
list2 = [{'key1': 'item1'}, {'key2': 'item2'}, {'key3': 'item3'}]

有没有一种方法可以获取两个列表之间的差异?

基本上,我需要一种可扩展的方法来获取包含字典的两个列表之间的差异。因此,我正在尝试比较这些列表,并只返回 {\'key3\':\'item3\'}

admin 更改状态以发布 2023年5月21日
0
0 Comments

你可以像这个例子那样使用推导式和 set():

def get_diff(elm1, elm2):
    a = set((m, n) for k in elm1 for m, n in k.items())
    b = set((m, n) for k in elm2 for m, n in k.items())
    if len(b) > len(a):
        return dict(b - a)
    return dict(a - b)
list1 = [{'key1': 'item1'}, {'key2': 'item2'}]
list2 = [{'key1': 'item1'}, {'key2': 'item2'}, {'key3': 'item3'}]
get_diff(list1, list2)

输出结果:

{'key3': 'item3'}

0
0 Comments

你可以使用列表推导:

list1 = [{'key1': 'item1'}, {'key2': 'item2'}]
list2 = [{'key1': 'item1'}, {'key2': 'item2'}, {'key3': 'item3'}]
print([x for x in list2 if x not in list1])

这将给出 [{'key3': 'item3'}]

0