Python for循环中添加字典到列表,结果列表中全是循环中的最后一个值
案例1
复制item1 = {}
gender_areas = []
for ge in gender:
# 男性
man = ge.split(":")[0].strip() or ''
# print("man",man)
# 男性比例
man_percent = ge.split(":")[1].strip() or ''
# print("man_percent",man_percent)
item1["man"] = man
item1["man_percent"] = man_percent
print(item1)
gender_areas.append(item1)
print("gender_areas", gender_areas)
运行结果:
全是女性,每次都是赋值最后一个字典
gender_areas [{'gender_area': '性别分布', 'man': '女性', 'man_percent': '13.46%'}, {'gender_area': '性别分布', 'man': '女性', 'man_percent': '13.46%'}]
解决方法1.
把item1 = {} 移到循环句里面,即可.
复制gender_areas = []
for ge in gender:
item1 = {}
# 男性
man = ge.split(":")[0].strip() or ''
# print("man",man)
# 男性比例
man_percent = ge.split(":")[1].strip() or ''
# print("man_percent",man_percent)
item1["man"] = man
item1["man_percent"] = man_percent
print(item1)
gender_areas.append(item1)
print("gender_areas", gender_areas)
运行结果正确:
gender_areas [{'gender_area': '性别分布', 'man': '男性', 'man_percent': '86.54%'}, {'gender_area': '性别分布', 'man': '女性', 'man_percent': '13.46%'}]
解决方法2.使用浅拷贝
复制def func():
...
yield result
list = []
for dic in func():
list.append(dic.copy())
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?