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

如何将Python字典按列格式写入CSV文件?

实现字典按列格式写入CSV的方法

这个需求核心是把字典的键作为CSV的列名,对应的值列表按行纵向填充,短列表的后续行自动补空。下面是两种可靠的实现方式:

方法一:使用Python内置csv模块(推荐)

csv模块会自动处理分隔符转义、数据类型转换等问题,是最安全的方式:

import csv

# 你的原始字典
items = {'people': ['Peter', 'Danny'], 'numbers': [1,2,3,4], 'cities': ['London']}

# 获取列名(Python 3.7+字典默认保持插入顺序,若需指定顺序可手动定义,比如columns = ['people', 'numbers', 'cities'])
columns = list(items.keys())
# 计算最长列表的长度,确定需要生成多少行
max_row_count = max(len(values) for values in items.values())

# 写入CSV文件
with open('output.csv', 'w', newline='', encoding='utf-8') as csv_file:
    writer = csv.writer(csv_file)
    # 先写入表头行
    writer.writerow(columns)
    # 逐行生成数据
    for row_index in range(max_row_count):
        # 构建当前行的每个元素:存在则取对应值,不存在则填空字符串
        current_row = [
            items[col][row_index] if row_index < len(items[col]) else ''
            for col in columns
        ]
        writer.writerow(current_row)

关键细节说明:

  • 如果你的Python版本低于3.7,字典是无序的,需要手动指定列顺序(比如columns = ['people', 'numbers', 'cities'])。
  • newline=''参数是为了避免Windows系统下写入时出现多余的空行。
  • 当元素包含逗号、引号等特殊字符时,csv.writer会自动用引号包裹该元素,保证CSV格式的正确性。

方法二:手动拼接字符串(不推荐,仅作参考)

如果不想用csv模块,可以手动拼接每行内容,但需要自己处理类型转换和特殊字符:

items = {'people': ['Peter', 'Danny'], 'numbers': [1,2,3,4], 'cities': ['London']}
columns = list(items.keys())
max_row_count = max(len(v) for v in items.values())

with open('output_manual.csv', 'w', encoding='utf-8') as txt_file:
    # 写入表头
    txt_file.write(','.join(columns) + '\n')
    # 逐行生成数据
    for row_index in range(max_row_count):
        row_elements = []
        for col in columns:
            if row_index < len(items[col]):
                # 把所有元素转成字符串,避免数字类型拼接报错
                row_elements.append(str(items[col][row_index]))
            else:
                row_elements.append('')
        # 拼接成一行并写入
        txt_file.write(','.join(row_elements) + '\n')

注意事项:

这种方法的缺点是如果元素包含逗号、双引号等字符,会破坏CSV格式,所以仅适用于数据非常简单的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:24:48