如何基于week值匹配替换模板字典列表项并合并已知字典列表
合并字典列表的实现方案
核心思路
以week作为匹配的唯一标识,先把已知值列表转换成字典(键为week,值为对应字典),快速定位匹配项;接着遍历模板列表完成替换,最后把模板中没有的已知值项补充进去。
代码实现
# 1. 将已知值列表转为以week为键的字典,提升查找效率 known_dict = {item['week']: item for item in known_values_list} # 2. 遍历模板列表,替换匹配项 final_list = [] for template_item in list_of_dicts_template: week_num = template_item['week'] if week_num in known_dict: # 可选:如果需要统一字段名(比如把tickets改为count_tickets),取消下面注释 # matched_item = known_dict[week_num].copy() # matched_item['count_tickets'] = matched_item.pop('tickets') # final_list.append(matched_item) final_list.append(known_dict[week_num]) del known_dict[week_num] # 移除已匹配项,避免后续重复添加 else: final_list.append(template_item) # 3. 补充模板中没有的已知值项 final_list.extend(known_dict.values())
说明
- 若需要统一结果字段名(比如把已知值中的
tickets替换为模板里的count_tickets),取消代码中的注释部分即可,输出结果会和预期结构完全一致。 - 转换为字典的操作能将查找效率从O(n)降到O(1),处理大量数据时更高效。
内容的提问来源于stack exchange,提问作者Jaroslav H.
相关产品推荐
相关产品推荐

