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

2024-04-25 07:48:28 发布

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

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

有没有办法区分这两个单子?在

基本上,我需要一种可伸缩的方法来获取包含字典的两个列表之间的差异。所以我尝试比较这些列表,得到一个返回值{'key3': 'item3'}


Tags: 方法列表字典差异区分单子key2key1
3条回答

您可以使用列表理解:

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'}]

in_list1_not_in_list2 = [i for i in list1 if i not in list2]
in_list2_not_in_list1 = [i for i in list2 if i not in list1]

您可以使用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)

输出:

^{pr2}$

相关问题 更多 >