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

如何用Python将含字典的列表转换为指定格式的CSV表格?

解决方法

你的数据结构需要先按列合并字典,再通过Series对齐行号,最后组合成DataFrame,具体步骤如下:

1. 数据预处理:合并每列的字典

每个内层列表对应一列,里面的多个字典需要合并成一个以行号为键的完整字典,保留行号信息。比如第一列[{0:"title1"},{1:"title2"}]合并后为{0: "title1", 1: "title2"}。

2. 转换为Series并合并成DataFrame

将每个合并后的字典转为Pandas Series(自动以字典的键为索引,也就是行号),然后把所有Series按列拼接,Pandas会自动对齐行号,缺失的位置填充NaN。

完整代码示例

import pandas as pd

# 你的原始数据
data = [[{0:"title1"},{1:"title2"}],[{0:"data1"},{1:"data2"}],[{1:"more data2"}]]

# 处理每一列:合并该列的所有字典
processed_cols = []
for col in data:
    col_dict = {}
    for d in col:
        col_dict.update(d)
    processed_cols.append(pd.Series(col_dict))

# 合并为DataFrame,行号自动对齐
df = pd.concat(processed_cols, axis=1)

# 导出为CSV
df.to_csv("output.csv", index_label="行号")

输出结果说明

生成的CSV内容如下:

行号,0,1,2
0,title1,data1,NaN
1,title2,data2,more data2

这样就严格按照行号匹配,列和行的对应关系完全符合需求。

为什么直接用DataFrame会失败?

直接将原始数据传入pd.DataFrame()时,Pandas会把外层列表的每个子列表当作行而非列,同时每个字典会被解析为单独的行记录,默认使用位置索引(0,1,2...)而非字典的键,因此丢失了行号匹配的逻辑,得到不符合预期的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 02:12:10