如何通过公共键Name合并两个Python字典列表并修复现有代码问题
现有代码问题分析
- 核心错误是遍历字典键值对时未调用
items()方法:直接迭代字典对象默认只会返回所有键,无法解包为k, v两个变量,运行时会直接抛出值错误。 - 现有写法依赖两个列表的元素顺序完全匹配,虽然题目给出了该前提,但如果后续数据顺序发生变化,会出现字段合并错位的问题。
合并实现方案
方案1:适配现有逻辑的修复版
如果确认两个列表的元素顺序完全、永远匹配,直接修复内层循环的遍历逻辑即可:
for i in range(len(x)): # 加.items()获取键值对 for k, v in x[i].items(): y[i][k] = v
方案2:按公共键Name匹配的通用方案
不依赖列表顺序,鲁棒性更高,更推荐使用:
# 先将x转为以Name值为键的映射字典,O(1)复杂度就能查找到对应数据 x_mapping = {item['Name']: item for item in x} # 遍历y的每个字典,合并x中对应Name的所有字段 for y_item in y: y_item.update(x_mapping[y_item['Name']])
运行后即可得到目标格式的y列表。
内容的提问来源于stack exchange,提问作者redpy
相关产品推荐
相关产品推荐

