登录
首页 >  文章 >  python教程

JSON单字典转多列表元素技巧

时间:2026-02-12 09:57:43 437浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《JSON中单字典转多列表元素方法》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

如何将 JSON 中的单个字典项批量复制为多个列表元素

本文讲解如何将一个字典对象高效复制多次并构造成 JSON 兼容的列表结构,适用于 API 请求体构造、测试数据生成等场景。

在实际开发中(如构建 REST API 请求 payload、生成测试用 JSON 数据),我们常需将同一个字典结构重复多次并组装为列表。例如,原始结构仅含一个对象:

"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 结构
payload = {"items": items_list}

# 序列化为 JSON 字符串(用于网络传输或文件写入)
import json
json_str = json.dumps(payload, indent=2)
print(json_str)

输出结果:

{
  "items": [
    {
      "text": "Hi",
      "feedback": ""
    },
    {
      "text": "Hi",
      "feedback": ""
    },
    {
      "text": "Hi",
      "feedback": ""
    },
    {
      "text": "Hi",
      "feedback": ""
    },
    {
      "text": "Hi",
      "feedback": ""
    }
  ]
}

⚠️ 注意事项

  • ❌ 避免直接 json.dump(dict, file) 在循环中调用 —— 这会连续写入多个 JSON 对象,导致文件内容非法(非标准 JSON 数组)。
  • ❌ 不要使用 [dict1] * 5 —— 它创建的是同一对象的 5 个引用,修改任一元素会影响全部;而列表推导式每次新建独立字典实例(对本例中纯字面量结构无影响,但属良好实践)。
  • ✅ 若字典内含可变对象(如嵌套列表、其他字典),且需完全独立副本,请改用 copy.deepcopy():
    import copy
    items_list = [copy.deepcopy(item_template) for _ in range(5)]

✅ 写入文件的正确方式

若需保存到文件,请先构建完整字典,再一次性 json.dump:

with open("output.json", "w", encoding="utf-8") as f:
    json.dump(payload, f, indent=2, ensure_ascii=False)

这样即可生成格式规范、可被任何 JSON 解析器正确读取的标准 JSON 文件。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>