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

从字典列表生成新字典列表时出现重复值问题求助

解决你的字典列表重复问题

嘿,别担心,这个问题其实很多Python新手都会遇到,我来帮你快速搞定!

问题根源

你现在的代码里,new_host = {}是定义在外层循环外面的,这意味着整个循环过程中你一直在修改同一个字典对象。每次把它添加到export_list_of_dictionaries里时,并没有创建新的字典,只是把这个字典的“引用”加了进去。所以最后列表里的1400个元素其实都指向同一个字典,自然显示的都是最后一次循环修改后的内容。

简单解决方案

只需要把new_host = {}移到外层循环的内部,让每次循环都创建一个全新的空字典就行:

# host_info 是从API获取的字典列表
# host_fields 是需要从host_info中提取的键列表
export_list_of_dictionaries = []

# 遍历host_info提取指定字段
for index in range(len(host_info)):
    # 每次循环都新建一个空字典,避免重复引用同一个对象
    new_host = {}
    for field in host_fields:
        new_host[field] = host_info[index][field]
    export_list_of_dictionaries.append(new_host)

更Pythonic的写法(可选)

如果你想让代码更简洁,还可以用列表推导+字典推导的方式,一行搞定,而且更不容易出错:

export_list_of_dictionaries = [
    {field: host[field] for field in host_fields}
    for host in host_info
]

这个写法的逻辑是:遍历host_info里的每一个host,为每个host生成一个只包含host_fields指定键的新字典,最后把所有新字典收集成一个列表。

这样修改后,你再查看export_list_of_dictionaries,每个字典都会对应原列表里的不同主机信息啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:06:33