
本文讲解如何正确构建嵌套结构:将多个键值对(如 {'record': 1}、{'record': 2} 等)统一追加到单个字典的列表字段中,并最终封装为含该字典的外层列表,避免因循环内重复初始化导致结构错误。
本文讲解如何正确构建嵌套结构:将多个键值对(如 `{'record': 1}`、`{'record': 2}` 等)统一追加到单个字典的列表字段中,并最终封装为含该字典的外层列表,避免因循环内重复初始化导致结构错误。
在 Python 中,若希望最终得到形如
[
{
"data": [
{"Record": 1},
{"Record": 2},
{"Record": 3}
]
}
]的嵌套结构,关键在于区分“容器创建”与“内容填充”两个阶段:row 字典(即最内层结构)必须在循环外部定义一次,否则每次迭代都会新建一个空字典,导致 data 列表中出现多个独立的 {'data': [...]},而非预期的单个字典。
✅ 正确做法如下:
data = []
data2 = [1, 2, 3]
# ✅ 在循环外定义唯一 row 字典
row = {
'data': [] # 初始化空列表,用于后续累积
}
# ✅ 在循环内仅向 row['data'] 追加元素
for x in data2:
row['data'].append({'Record': x}) # 注意:键名按需求改为大写 'Record'
# ✅ 循环结束后,再将完整 row 加入 data 列表
data.append(row)
# ✅ 可选:美化输出(需 import json)
import json
print(json.dumps(data, indent=4))? 输出结果:
[
{
"data": [
{
"Record": 1
},
{
"Record": 2
},
{
"Record": 3
}
]
}
]⚠️ 常见错误提醒:
- ❌ 错误地在 for 循环内创建 row = {...} → 导致 data 包含多个字典,每个 data 字段仅含一个元素;
- ❌ 拼写不一致(如 'record' vs 'Record')→ 需根据目标格式统一键名大小写;
- ❌ 忘记将 row 添加进 data 列表 → 最终 data 为空。
? 进阶建议:
可使用列表推导式+字典构造进一步简化逻辑(等价但更紧凑):
data2 = [1, 2, 3]
data = [{'data': [{'Record': x} for x in data2]}]该写法语义清晰、无副作用,适合数据结构固定且逻辑简单的场景。但若需在填充过程中加入条件判断或复杂处理,仍推荐显式的 for 循环方式以保证可读性与可维护性。

















