Python中如何基于另一字典列表长度迭代生成重复字典列表?
问题解决:生成重复字典的列表
原代码问题分析
你写的代码存在两个核心问题:
- 迭代逻辑错误:
for list2 in list1:会把list2变量直接覆盖为list1里的字典,完全没对原本包含3个空字典的list2做任何操作 - 未定义变量:代码里的
data和file没有提前定义,且逻辑和需求不匹配,没有实现对list2元素的更新
正确实现方法
方法一:更新原list2的空字典
如果需要保留原来的list2列表对象,遍历每个空字典并更新内容:
import json list1 = [{"A": "a", "B": "b"}] list2 = [{}, {}, {}] # 取出list1中的目标字典 target_dict = list1[0] # 遍历list2的每个元素,用update方法写入键值对 for item in list2: item.update(target_dict) # 写入文件(如果需要) with open("result.json", "w") as f: json.dump(list2, f, indent=4) # 输出结果 print(list2) # 输出:[{'A': 'a', 'B': 'b'}, {'A': 'a', 'B': 'b'}, {'A': 'a', 'B': 'b'}]
方法二:直接生成新列表
如果不需要保留原list2的空字典,可直接生成包含3个独立字典的新列表:
import json list1 = [{"A": "a", "B": "b"}] target_dict = list1[0] # 用列表推导式生成,注意用copy()创建独立字典,避免引用同一对象 list2 = [target_dict.copy() for _ in range(3)] # 写入文件 with open("result.json", "w") as f: json.dump(list2, f, indent=4) print(list2)
注意:不要用
[target_dict]*3,这种方式会让列表里的所有元素指向同一个字典对象,修改其中一个会同步改变其他所有字典。
内容的提问来源于stack exchange,提问作者nani
相关产品推荐
相关产品推荐

