You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用另一列表的字典值替换目标列表字典的对应值?

如何合并两个字典列表并按规则替换值?

看起来你是想以list1里的字典作为模板,用list2中所有字典的键值对去替换模板里对应的0值,同时保留list1里原本的键(没在list2出现的键保持0)。之前的遍历方式没得到正确结果,大概率是没先把list2里的所有更新值统一整合,或者处理重复键的时候没按你需要的规则(比如保留第一个出现的值)来。

解决方案步骤:

  1. 先整合list2中的所有键值对:根据你的期望输出,val-1最终是90(list2第一个字典里的值),而不是第二个字典里的100,所以我们要保留每个键第一次出现的值,避免被后续重复键覆盖。
  2. 遍历list1的模板字典:对每个模板里的键,用整合后的字典里的值(如果存在)替换原有的0,否则保留0。

完整代码示例:

list1 = [{'val-1': 0, 'val-2': 0, 'val-3': 0}, 
         {'val-1': 0, 'val-2': 0, 'val-3': 0}, 
         {'val-4': 0, 'val-5': 0, 'val-6': 0}]
list2 = [{'val-1': 90, 'val-4': 89, 'val-3': 99}, 
         {'val-2': 88, 'val-6': 55, 'val-1':100}]

# 步骤1:整合list2的键值对,保留每个键第一次出现的值
combined_updates = {}
for d in list2:
    for key, value in d.items():
        if key not in combined_updates:
            combined_updates[key] = value

# 步骤2:遍历list1的模板,替换对应值
result = []
for template_dict in list1:
    updated = {}
    for key, default_val in template_dict.items():
        # 优先用整合后的值,没有则保留原默认值
        updated[key] = combined_updates.get(key, default_val)
    result.append(updated)

print(result)

输出结果:

[{'val-1': 90, 'val-2': 88, 'val-3': 99}, 
 {'val-1': 90, 'val-2': 88, 'val-3': 99}, 
 {'val-4': 89, 'val-5': 0, 'val-6': 55}]

可选调整:保留list2中最后一次出现的键值

如果你之后需求变更,想要用list2里最后出现的键值(比如val-1要变成100),那整合步骤可以简化成用update方法,后面的字典会覆盖前面的重复键:

combined_updates = {}
for d in list2:
    combined_updates.update(d)

内容的提问来源于stack exchange,提问作者user14455698

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:25:39