为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

撒科打诨 2021-08-14 16:44:54
list1 = [{'key1': 'item1'}, {'key2': 'item2'}] list2 = [{'key1': 'item1'}, {'key2': 'item2'}, {'key3': 'item3'}]有没有办法获得这两个列表之间的差异?基本上,我需要一种可扩展的方法来获取包含字典的 2 个列表之间的差异。所以我试图比较这些列表,然后得到一个回报{'key3': 'item3'}
查看完整描述

3 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

您可以使用列表理解:


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


查看完整回答
反对 回复 2021-08-14
?
狐的传说

TA贡献1804条经验 获得超3个赞

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


查看完整回答
反对 回复 2021-08-14
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

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]


查看完整回答
反对 回复 2021-08-14
  • 3 回答
  • 0 关注
  • 191 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信