Python如何合并两个字典列表并为共有元素添加confidence字段
问题原因
你原有代码的核心问题是使用了双重嵌套循环,每一对来自lst1和lst2的元素都会触发一次判断逻辑,会导致大量重复插入元素,非重叠的元素也会被多次添加到结果里,逻辑完全不符合需求。
正确实现方案
我们可以通过临时字典对所有key做去重和标记,时间复杂度为O(n+m),比双重循环效率更高,且输出顺序和你预期的完全一致:
lst1 = [ {'key': 'data_collected.service_data'}, {'key': 'gdpr.gdpr_compliance'}, {'key': 'disclosure_of_information.purpose_of_disclosure'}, {'key': 'opt_out.choice_of_opt_out'} ] lst2 = [ {'key': 'child_data_protection.parent_guardian_consent'}, {'key': 'ccpa.ccpa_compliance'}, {'key': 'disclosure_of_information.purpose_of_disclosure'}, {'key': 'opt_out.choice_of_opt_out'} ] # 用临时字典存储key对应的条目,键为字典的key字段值 key_map = {} # 先遍历第一个列表存入临时字典 for item in lst1: key_map[item['key']] = item.copy() # 加copy避免修改原列表里的字典,不需要可去掉 # 再遍历第二个列表处理重叠项 for item in lst2: current_key = item['key'] if current_key in key_map: # key在两个列表都存在,添加confidence字段 key_map[current_key]['confidence'] = 1 else: # 新增key直接存入 key_map[current_key] = item.copy() # 提取所有值即为最终结果 res = list(key_map.values()) print(res)
内容的提问来源于stack exchange,提问作者user16503418
相关产品推荐
相关产品推荐

