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

Python如何创建由互不相同的独立字典构成的列表

问题描述

需要创建元素为字典的列表,初始实现代码运行后输出不符合预期。
原实现代码:

list = ['Frank','John', 'Mitchel','Melania','Samson','scophield']
dict = []

for i in list:
    name = {}
    for i in list:
        name["First_name"]= i
    dict.append(name)

print(dict)

实际运行输出:

[{'First_name': 'scophield'}, {'First_name': 'scophield'}, {'First_name': 'scophield'}, {'First_name': 'scophield'}, {'First_name': 'scophield'}, {'First_name': 'scophield'}]

预期输出:

[{'First_name': 'Frank'}, {'First_name': 'John'}, {'First_name': 'Mitchel'}, {'First_name': 'Melania'}, {'First_name': 'Samson'}, {'First_name': 'scophield'}]
错误原因
  • 存在多余的内层嵌套循环:外层循环已经在逐个遍历姓名列表的元素,内层又完整遍历了一次整个列表,每次遍历都会覆盖name字典中First_name的值,内层循环结束后该值固定为列表最后一个元素scophield,最终所有字典的取值都是这个值。
  • 变量命名不规范:使用list、dict作为变量名会覆盖Python内置的列表、字典类型,后续调用相关内置方法时容易触发异常。
修改方法

删除冗余的内层循环即可,修正后的可运行代码:

name_list = ['Frank','John', 'Mitchel','Melania','Samson','scophield']
result = []

for name_str in name_list:
    name = {"First_name": name_str}
    result.append(name)

print(result)

如果追求更简洁的写法,也可以用列表推导式实现,逻辑完全一致:

name_list = ['Frank','John', 'Mitchel','Melania','Samson','scophield']
result = [{"First_name": name} for name in name_list]
print(result)

运行上述任意一段代码,都能得到预期的输出结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 08:44:04