比较两个词典列表

时间:2017-12-14 18:51:55

标签: python python-3.x list dictionary

我有两个词典列表:

list_1 = [
           {'total': 18, 'lead_status': '2'},
           {'total': 18, 'lead_status': '9'}, 
           {'total': 18, 'lead_status': '8'}, 
           {'total': 16, 'lead_status': '15'}, 
           {'total': 17, 'lead_status': '14'}
         ]

list_2 = [
           {'total': 18, 'lead_status': '2'}, 
           {'total': 22, 'lead_status': '9'},
           {'total': 18, 'lead_status': '8'},
           {'total': 16, 'lead_status': '15'}, 
           {'total': 17, 'lead_status': '14'}
         ]

lead_status始终具有唯一值,列表中字典的顺序可能相同也可能不同。

我想检查每个lead_status total值在两个列表中是否相同

示例

对于lead_status : '2',两个列表都有相同的total,即18,然后返回True

对于lead_status : '9',这两个列表都有不同的totallist_1为18,list_2为22。所以它返回False

我在此解决方案中尝试了答案:Comparing 2 lists consisting of dictionaries with unique keys in python

请帮忙解决这个问题。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

根据我对你的问题的理解,这应该有效:

In [25]: dict_1 = {l['lead_status']:l['total'] for l in list_1}

In [26]: dict_2 = {l['lead_status']:l['total'] for l in list_2}

In [28]: {k: (dict_2[k] == v) for k, v in dict_1.items()}
Out[28]: {'14': True, '15': True, '2': True, '8': True, '9': False}

首先创建一个等于值lead_status的密钥的dict和total的值,然后比较从这两个列表创建的dict。

但是,如果你的'lead_status'键的值与被覆盖的值相同。