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

如何用Python列表新值批量更新字典列表指定键的值?

字典列表按序更新指定键值的解决方案

需求说明

遍历字典列表,将每个字典中指定键的值替换为有序列表对应位置的新值——第1个字典的指定键对应新值列表第1个元素,以此类推。

示例数据:

dict_list = [{'person':'Tom', 'job':'student'},
            {'person':'John', 'job':'teacher'},
            {'person':'Mary', 'job':'manager'}]
new_jobs = ['lecturer', 'cook', 'driver']

期望结果:

dict_list = [{'person':'Tom', 'job':'lecturer'},
            {'person':'John', 'job':'cook'},
            {'person':'Mary', 'job':'driver'}]

错误代码分析

你尝试的嵌套循环逻辑存在问题:

def update_dic_list():
    for dictionary in dict_list:
        for i in range(len(new_jobs)):
            dictionary['job'] = new_jobs[i]
        print(dict_list)

内层循环会遍历所有新值,最终每个字典的job都会被覆盖为new_jobs的最后一个元素(driver),外层循环每处理一个字典就打印一次,因此会看到字典逐步被替换为最后一个新值的过程。

正确解决方案

方法1:使用zip()配对遍历

利用zip()将字典列表和新值列表的对应元素配对,一次循环即可完成更新:

dict_list = [{'person':'Tom', 'job':'student'},
            {'person':'John', 'job':'teacher'},
            {'person':'Mary', 'job':'manager'}]
new_jobs = ['lecturer', 'cook', 'driver']

# 遍历配对后的字典和新值
for dic, new_job in zip(dict_list, new_jobs):
    dic['job'] = new_job

print(dict_list)

方法2:封装为通用函数

如果需要频繁处理这类需求,可以封装成通用函数,支持指定任意键:

def update_dict_list(dict_list, target_key, new_values):
    # 配对遍历字典列表和新值列表
    for dic, value in zip(dict_list, new_values):
        dic[target_key] = value

# 调用示例
dict_list = [{'person':'Tom', 'job':'student'},
            {'person':'John', 'job':'teacher'},
            {'person':'Mary', 'job':'manager'}]
new_jobs = ['lecturer', 'cook', 'driver']

update_dict_list(dict_list, 'job', new_jobs)
print(dict_list)

方法3:处理长度不一致的情况

如果字典列表和新值列表长度不同,zip()会以较短的列表为准。若需要明确处理索引(避免越界),可以用索引遍历:

def update_dict_list(dict_list, target_key, new_values):
    # 取两者的最小长度,只处理存在对应元素的位置
    max_index = min(len(dict_list), len(new_values))
    for i in range(max_index):
        dict_list[i][target_key] = new_values[i]

内容的提问来源于stack exchange,提问作者Tomáš Savčenko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:15:42