Python中按code键映射两个字典列表并补全缺失字段的方法
Python字典列表按code键合并的实现方案
实现思路
- 先将
my_list_a转换为以code为键的映射字典,便于快速查询对应code的基础信息; - 遍历
my_list_b,将每个元素与my_list_a中对应code的字典合并; - 补充
my_list_a中存在但my_list_b里没有的code条目,缺失的university字段填充为空字符串; - 可选:对结果按code排序,与示例输出顺序一致。
代码实现
my_list_a = [ {"code": "A", "name": "Mr A"}, {"code": "B", "name": "Mrs B"}, {"code": "C", "name": "Mrs C"} ] my_list_b = [ {"code": "A", "university": "Oxford"}, {"code": "B", "university": "Stanford"}, {"code": "B", "university": "Harvard"}, ] # 构建code到基础信息的映射 code_map = {item["code"]: item for item in my_list_a} result = [] # 合并my_list_b中的条目 for b_item in my_list_b: code = b_item["code"] # 合并两个字典,保留双方字段 merged_dict = {**code_map[code], **b_item} result.append(merged_dict) # 补充my_list_a中独有的code条目 existing_codes = {item["code"] for item in my_list_b} for code, a_item in code_map.items(): if code not in existing_codes: result.append({**a_item, "university": ""}) # 按code排序,匹配示例输出顺序 result.sort(key=lambda x: x["code"]) # 输出结果 print(result)
输出结果
运行代码后会得到与你期望一致的列表:
[ {"code": "A", "name": "Mr A", "university": "Oxford"}, {"code": "B", "name": "Mrs B", "university": "Stanford"}, {"code": "B", "name": "Mrs B", "university": "Harvard"}, {"code": "C", "name": "Mrs C", "university": ""} ]
内容的提问来源于stack exchange,提问作者Alain Skyter
相关产品推荐
相关产品推荐

