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

如何用Python从字典生成键值各占一行的CSV?writerow遇问题

解决Python字典转CSV的行输出问题

我猜你大概率是不小心在循环里逐个输出键值对了——比如遍历字典的每个元素时调用writerow(),这样自然会每行只出一个元素。咱们直接用正确的方式一次性输出整行就好,具体思路和代码如下:

核心解决步骤

要实现你要的效果,其实只需要两次writerow()调用:一次输出所有键作为表头,一次输出所有对应的值作为内容行。关键是要把字典的键和值都转换成完整的列表传入writerow(),而不是单个元素。

完整代码示例

import csv

mergedDict = {'a': '1', 'b': '2', 'c': '3', 'd': '4', 'e': '5', 'f': '6', 'g': '7', 'h': '8', 'i': '9', 'j': '10'}

# 使用with语句自动管理文件关闭,避免资源泄漏
with open('output.csv', 'w', newline='', encoding='utf-8') as csvfile:
    # 创建CSV写入对象
    writer = csv.writer(csvfile)
    
    # 输出表头行:把字典的键转为列表传入writerow
    writer.writerow(list(mergedDict.keys()))
    # 输出内容行:把字典的值转为列表传入writerow
    writer.writerow(list(mergedDict.values()))

关键细节说明

  • 字典顺序问题:Python 3.7及以上版本的普通字典是插入有序的,所以你的mergedDict里a到j的顺序会被保留。如果是更早的Python版本,需要用collections.OrderedDict来保证顺序。
  • newline=''参数:这是csv模块官方推荐的写法,能避免Windows系统下输出的CSV出现多余空行的问题。
  • 为什么转成list:mergedDict.keys()和mergedDict.values()在Python3中返回的是视图对象,虽然writerow()也能接受,但转成list更直观也更兼容一些。

输出结果验证

运行代码后生成的output.csv内容会完全符合你的预期:

a,b,c,d,e,f,g,h,i,j
1,2,3,4,5,6,7,8,9,10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:04:07