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

Python中如何将多列字典数据导出为单个CSV文件?

enter image description here

我正尝试将数据导出为CSV文件,该数据包含15列、400行。在代码中,我为每一列分别存储了一个字典,希望将所有字典的数据整合到同一个CSV文件中。我曾尝试使用for循环实现此操作,但未能成功。

嘿,太懂你这种卡壳的感觉了!把15个对应不同列的字典整合成规范的CSV确实容易踩坑,尤其是循环没走通的时候。下面给你两种实用的解决方案,按需选就行:

方法一:用Pandas快速搞定(推荐)

如果你的环境里已经装了Pandas,这绝对是最省心的方式。核心思路是把每个列字典的数值提取成有序列表,再组合成DataFrame直接导出:

假设你的列字典是这样的结构(每个字典的键对应行号,值是该行的列数据):

# 示例:第一列的字典,键是行号0-399,值是对应数据
col1 = {0: "张三", 1: "李四", ..., 399: "王五"}
col2 = {0: 25, 1: 30, ..., 399: 28}
# ... 剩下13个对应其他列的字典

直接用下面的代码就能导出:

import pandas as pd

# 把所有列整理成一个大字典,键是你想要的表头名称,值是对应列的有序数据列表
data = {
    "姓名": list(col1.values()),
    "年龄": list(col2.values()),
    # ... 依次添加剩下的13列,注意顺序要和你需要的CSV列顺序一致
}

# 转换成DataFrame,自动对齐行数据
df = pd.DataFrame(data)

# 导出CSV,index=False是去掉自动生成的行号,utf-8-sig避免中文乱码
df.to_csv("result.csv", index=False, encoding="utf-8-sig")
方法二:用Python原生csv模块(无需额外安装库)

如果不想依赖第三方库,用Python自带的csv模块也能实现。核心是遍历每一行,收集所有列对应行的数据再写入:

import csv

# 把所有列字典按你想要的CSV列顺序放进列表
column_dicts = [col1, col2, ..., col15]
# 对应每一列的表头名称,顺序要和上面的列表一致
column_names = ["姓名", "年龄", ..., "列15"]

# 获取所有行号(假设所有字典的键都是0-399,且完全一致,排序后保证顺序正确)
row_numbers = sorted(col1.keys())

# 打开文件写入CSV
with open("result.csv", "w", newline="", encoding="utf-8-sig") as csv_file:
    # 初始化字典写入器,指定表头
    writer = csv.DictWriter(csv_file, fieldnames=column_names)
    writer.writeheader()  # 先写入表头
    
    # 遍历每一行,收集对应所有列的数据
    for row_id in row_numbers:
        row_data = {}
        for idx, col_dict in enumerate(column_dicts):
            row_data[column_names[idx]] = col_dict[row_id]
        writer.writerow(row_data)

几个关键注意点:

  • 确保所有列字典的键(行标识)完全一致,不然会出现数据错位或者缺失的情况
  • 如果你的行标识不是数字,只要所有字典的键集合相同,排序后遍历就没问题
  • 导出时用utf-8-sig编码,能避免Windows系统下打开CSV出现中文乱码的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:33:34