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

如何将值为不等长列表的字典转换为CSV文件?

解决不等长列表字典转CSV的问题

你已经找对了转置的方向,但遇到了不等长列表的小坑——默认的转置方法会在最短的列耗尽后就停止,导致长列表后面的元素直接丢失。别担心,我们只需要先把短列表补全,再转置写入CSV就能搞定。

完整解决方案代码

import csv

dict_data = { 
    "Data 1": ["cool", "fantastic"], 
    "Data 2": ["spam", "hello", "howdy", "foo"], 
    "Data 3": ["good morning"], 
}

# 提取表头和对应列数据(Python 3.7+字典默认保留插入顺序)
headers = list(dict_data.keys())
columns = list(dict_data.values())

# 找到最长列的长度,用来补全短列表
max_col_length = max(len(col) for col in columns)

# 给短列表补上空字符串,让所有列长度一致
padded_columns = [col + [""] * (max_col_length - len(col)) for col in columns]

# 把列数据转置为行数据
transposed_rows = list(zip(*padded_columns))

# 写入CSV文件
with open('result.csv', 'w', newline='') as out_file:
    writer = csv.writer(out_file, dialect='excel')
    writer.writerow(headers)  # 先写表头
    writer.writerows(transposed_rows)  # 批量写入所有行

代码细节说明

  1. 表头与列数据提取:直接把字典的键作为CSV表头,值作为每一列的内容。如果你的Python版本低于3.7,记得用collections.OrderedDict来保证键的顺序。
  2. 补全短列表:找到所有列里最长的长度,给短列表后面补上对应数量的空字符串,这样转置时就不会漏掉长列表的后续元素。
  3. 转置数据:用zip(*padded_columns)快速把列转成行,它会自动按位置配对每个列的元素。
  4. 写入CSV:用csv.writer先写入表头,再批量写入转置后的行,生成的CSV用Excel打开时,空字符串会显示为空单元格,完全符合你想要的格式。

生成的CSV内容如下:

Data 1,Data 2,Data 3
cool,spam,good morning
fantastic,hello,
,howdy,
,foo,

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:33:17