You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何访问字典列表元素并写入CSV行

处理API返回的字典列表写入CSV方案

先明确data的结构

从你提供的JSON示例来看,data字段对应的是由多个结构相似(或可能存在少量字段差异)的字典组成的列表,每个子字典代表一条独立的业务记录,比如:

{
  "code": 200,
  "msg": "success",
  "data": [
    {"id": 1, "name": "Alice", "age": 25},
    {"id": 2, "name": "Bob"},  // 示例:存在字段缺失的情况
    {"id": 3, "name": "Charlie", "age": 35, "email": "charlie@xxx.com"}  // 示例:存在额外字段的情况
  ]
}

每个子字典的键就是CSV的列名,值对应列的内容。

你的思路是否正确?

如果你的思路是「提取data列表,遍历每个子字典,将所有子字典的键作为CSV表头(仅写入一次),每个子字典的键值对对应CSV的一行」——这个思路完全正确,是处理这类场景的标准做法。

技术实现指导

下面提供两种常用的实现方式,按需选择:

方式1:用Python原生csv模块(无需额外依赖)

适合需要精细控制写入过程、或项目不能引入第三方库的场景:

import json
import csv

# 1. 解析API返回的JSON数据(实际开发中替换为API响应的解析逻辑)
api_response = ""  # 这里替换为你获取到的API响应内容
response_dict = json.loads(api_response)
data_list = response_dict['data']

# 2. 收集所有可能的字段(兼容子字典字段不一致的情况)
all_columns = set()
for item in data_list:
    all_columns.update(item.keys())
all_columns = sorted(all_columns)  # 排序保证表头顺序固定

# 3. 写入CSV文件
with open('result.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.DictWriter(f, fieldnames=all_columns)
    writer.writeheader()  # 写入表头行
    # 批量写入所有记录,数据量极大时可改为逐个writerow(item)
    writer.writerows(data_list)

方式2:用pandas库(代码更简洁)

适合快速开发、或需要后续对数据做分析处理的场景,需要先安装pandas(pip install pandas):

import json
import pandas as pd

# 1. 解析API返回的JSON数据
api_response = ""  # 替换为你的API响应内容
response_dict = json.loads(api_response)
data_list = response_dict['data']

# 2. 直接转成DataFrame并写入CSV
df = pd.DataFrame(data_list)
df.to_csv('result_pandas.csv', index=False, encoding='utf-8')

注意事项

  • 字段兼容:如果子字典存在字段缺失,两种方式都会自动将对应单元格留空,无需额外处理
  • 编码问题:建议使用utf-8编码,若Windows下打开CSV出现乱码,可改用utf-8-sig编码
  • 大数据量处理:如果API返回的data列表包含上万条以上数据,建议用原生csv模块的writerow逐个写入,避免一次性加载所有数据占用过多内存

内容的提问来源于stack exchange,提问作者humbleStrength

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 23:52:35