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
相关产品推荐
相关产品推荐

