
本文介绍如何将 json 数据结构中一个字典对象高效复制多次并构建成包含多个相同元素的列表,适用于批量初始化、测试数据生成等场景。
在构建 JSON 格式的数据(如 API 请求体或配置文件)时,常需将同一个字典对象重复若干次,组成一个长度固定的对象列表。例如,原始结构中 "items" 字段仅包含一个对象:
"items": [
{
"text": "Hi",
"feedback": ""
}
]而目标是将其扩展为包含 5 个完全相同字典项的数组:
"items": [
{ "text": "Hi", "feedback": "" },
{ "text": "Hi", "feedback": "" },
{ "text": "Hi", "feedback": "" },
{ "text": "Hi", "feedback": "" },
{ "text": "Hi", "feedback": "" }
]✅ 正确做法:使用列表推导式(推荐)
Python 中最简洁、高效的方式是利用列表推导式对字典进行浅拷贝复制(注意:若字典含可变嵌套对象,需深拷贝):
item_template = {
"text": "Hi",
"feedback": ""
}
# 生成含 5 个相同字典的列表
items_list = [item_template for _ in range(5)]
# 构建完整 JSON 结构
data = {"items": items_list}
# 写入文件(确保格式化 + 编码正确)
import json
with open("output.json", "w", encoding="utf-8") as f:
json.dump(data, f, indent=2)⚠️ 注意: 不要直接用 json.dump(dict, file) 在循环中反复调用——这会将多个 JSON 片段连续写入文件,导致非法 JSON 格式(如 {...}{...}{...}),无法被标准解析器读取。 dict 是 Python 内置类型名,切勿用作变量名(如 dict = {...}),否则会覆盖内置函数,引发隐晦错误。应使用 item_template、base_item 等语义化名称。 若字典内含列表、嵌套字典等可变对象且需独立副本,请改用 copy.deepcopy():
import copy items_list = [copy.deepcopy(item_template) for _ in range(5)]
✅ 验证输出示例
运行上述代码后,output.json 将生成合法、格式清晰的 JSON:
{
"items": [
{
"text": "Hi",
"feedback": ""
},
{
"text": "Hi",
"feedback": ""
},
{
"text": "Hi",
"feedback": ""
},
{
"text": "Hi",
"feedback": ""
},
{
"text": "Hi",
"feedback": ""
}
]
}该方法简洁、可读性强,符合 Python 惯用法,是处理此类 JSON 批量构造任务的标准实践。









