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

如何使用CSV Writer/DictWriter按列匹配乱序字典写入CSV(Python3.5.2)

解决方法:使用csv.DictWriter类

在Python 3.5.2中,你可以直接利用标准库的csv模块里的DictWriter类来搞定这个问题。它的核心优势就是完全不关心字典键的顺序,只根据你指定的CSV表头(fieldnames)来匹配字典的键,把对应的值精准写入到对应的列中,完美适配你的场景。

具体步骤和代码示例:

  1. 定义CSV表头和待写入的字典集合
    先把你的CSV表头存成一个列表(顺序就是你想要的最终CSV列顺序),再准备好你的字典数据:
import csv

# 你的CSV表头,顺序就是最终CSV的列顺序
csv_headers = ["id", "username", "email", "create_time"]

# 示例字典列表,键顺序混乱,但键和表头完全一致
data_dicts = [
    {"email": "user1@example.com", "id": 1, "create_time": "2024-01-01", "username": "Alice"},
    {"username": "Bob", "id": 2, "email": "user2@example.com", "create_time": "2024-01-02"},
    {"create_time": "2024-01-03", "email": "user3@example.com", "username": "Charlie", "id": 3}
]
  1. 创建DictWriter对象并写入内容
    打开CSV文件时记得加上newline=''(避免Python3下写入时出现多余空行),先通过writeheader()写入表头,再循环用writerow()写入每个字典:
# 打开文件('w'表示写入模式,encoding指定编码避免乱码)
with open("output.csv", "w", encoding="utf-8", newline='') as csv_file:
    # 创建DictWriter对象,指定表头顺序
    writer = csv.DictWriter(csv_file, fieldnames=csv_headers)
    # 写入CSV表头
    writer.writeheader()
    # 循环写入每个字典
    for data in data_dicts:
        writer.writerow(data)

为什么这个方法有效?

  • DictWriter的fieldnames参数直接定义了CSV的列顺序,不管你传入的字典键是什么顺序,它都会根据键名去匹配fieldnames里的列,把对应的值放到正确的位置上。
  • 虽然Python 3.5.2的字典是无序的(3.7+才默认有序),但DictWriter只关注键的名称匹配,完全不受字典内部键顺序的影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:13:26