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

如何从含不同列的字典列表生成CSV文件

嘿,这个需求我之前处理过好几次,先给你明确说:你手动写循环生成无重复列名的思路完全没问题,不过其实有更省心的方法,不管是用Python内置模块还是第三方库都能轻松搞定。

方法一:用Python内置的csv模块(无额外依赖)

如果你不想引入额外库,用标准库的csv.DictWriter就能完美解决,它会自动处理字典里缺失的键,对应位置留空。

首先,你自己写的列名去重逻辑是合理的,要是想保持键出现的顺序(比如先出现的列排在前面),可以这么写:

import csv

data = [{'A': 'a', 'B': 'b'}, {'A': 'd', 'C': 'c'}]

# 收集所有唯一列名,保持出现顺序
columns = []
seen = set()
for row in data:
    for key in row:
        if key not in seen:
            seen.add(key)
            columns.append(key)

# 写入CSV
with open('output.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.DictWriter(f, fieldnames=columns)
    writer.writeheader()  # 写入列名
    writer.writerows(data)  # 批量写入行数据

运行后生成的CSV内容就是你想要的:

A,B,C
a,b,
d,,c

方法二:用pandas(更简洁,适合大数据量)

如果你的项目已经在用pandas,或者数据量比较大,那一行代码就能搞定,连列名去重都不用自己写:

import pandas as pd

data = [{'A': 'a', 'B': 'b'}, {'A': 'd', 'C': 'c'}]
df = pd.DataFrame(data)
df.to_csv('output_pandas.csv', index=False)

pandas会自动识别所有字典里的键作为列名,缺失的值默认填充NaN,写入CSV时会变成空单元格,完全符合你的需求。

关于你之前的疑问

你自己写循环生成无重复键列表是必要的吗?——如果用csv模块的话,是的,因为DictWriter需要明确传入fieldnames参数;但如果用pandas,这一步可以完全省略,库会帮你自动处理所有列名的去重和排序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:15:25