获取包含字典的 2 个列表之间的区别

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

有没有办法获得这两个列表之间的差异?

基本上,我需要一种可扩展的方法来获取包含字典的 2 个列表之间的差异。所以我试图比较这些列表,然后得到一个回报{'key3': 'item3'}


撒科打诨
浏览 192回答 3
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'}]

狐的传说

你可以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'}

收到一只叮咚

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]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python