根据某些值比较两个字典列表

时间:2019-04-25 01:35:22

标签: python dictionary

我有两个字典列表:

old_data = [{'company': 'Amazon', 'logged_in': '2019-01-20'},
            {'company': 'Facebook', 'logged_in': '2019-04-20'},
            {'company': 'Google', 'logged_in': '2019-04-20'}]

new_data = [{'company': 'Amazon', 'logged_in': '2019-01-26'},
            {'company': 'Facebook', 'logged_in': '2019-04-12'},
            {'company': 'LinkedIn', 'logged_in': '2019-04-20'}]

我想将new_data过滤为:

  1. 如果在old_data和new_data中公司名称匹配,则仅当new_data中的登录时间晚于old_data中的公司时,才选择公司
  2. 如果公司名称不匹配,则选择该元素

预期结果:

[{'company': 'Amazon', 'logged_in': '2019-01-26'},
{'company': 'LinkedIn', 'logged_in': '2019-04-20'}]

1 个答案:

答案 0 :(得分:0)

filter_new_data = []
for old_dict, new_dict in zip(old_data, new_data):
    if new_dict['company'] not in [d['company'] for d in old_data]:
        filter_new_data.append(new_dict)
    elif new_dict['company'] == old_dict['company'] and new_dict['logged_in'] > old_dict['logged_in']:
        filter_new_data.append(new_dict)