Python如何将键不固定的异构对象列表存储到CSV文件中
键数量不固定的对象列表存储为CSV文件的实现方法
实现逻辑
- 首先提取所有对象中出现过的唯一键作为CSV表头
- 写入时自动补全每个对象缺失的字段,缺失字段值留空,保证所有字段都完整存储
代码实现
方法1:使用Python内置csv模块(无需安装第三方依赖)
import csv # 待存储的对象列表示例 obj_list = [ {"name": "abc", "class": "10th"}, {"name": "abcd", "class": "11th", "div": "A"} ] # 收集所有唯一键作为表头,可自行调整表头顺序 headers = list({key for obj in obj_list for key in obj}) with open('output.csv', 'w', newline='', encoding='utf-8') as csv_file: writer = csv.DictWriter(csv_file, fieldnames=headers) # 写入表头行 writer.writeheader() # 批量写入所有对象数据,缺失字段自动填充为空 writer.writerows(obj_list)
方法2:使用pandas库(代码更简洁)
import pandas as pd obj_list = [ {"name": "abc", "class": "10th"}, {"name": "abcd", "class": "11th", "div": "A"} ] # 自动识别所有字段生成DataFrame,缺失字段默认赋值为NaN,转CSV时自动留空 df = pd.DataFrame(obj_list) # 导出为CSV,index=False表示不导出行号列 df.to_csv('output.csv', index=False, encoding='utf-8')
输出效果
最终生成的CSV效果如下:
缺失对应字段的行,对应列会自动留空,所有出现过的字段都会完整保留
内容的提问来源于stack exchange,提问作者Monika
相关产品推荐
相关产品推荐

