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

如何将嵌套字典按逐行键值对格式写入带换行的CSV文件

嵌套字典写入CSV实现方案

原代码错误点

  • 写入传参不匹配:双层遍历已经拿到三个目标字段对应的值(外层键对应Row、内层键对应Chip、内层值对应Voltage),但传入写入函数的是整个内层字典,字典键为50/150等数值,和预设表头字段名完全不匹配,导致写入内容异常。
  • 冗余IO操作:每写入一行就执行一次文件打开、关闭操作,性能低下。
  • 冗余关闭逻辑:with上下文管理器会自动完成文件关闭,不需要手动调用close()方法。

最优实现代码

不需要拆分写表头、逐行追加的独立函数,直接通过一次文件IO完成全部写入,逻辑简洁性能更高:

from csv import writer

my_dict = {1: {50: 6, 150: 5, 250: 6, 350:5.5, 450: 6.1},
            2: {50: 5.8, 150: 5, 250: 6.3, 350:5.5, 450: 5.9},
            3: {50: 6, 150: 5.8, 250: 6, 350:5.5, 450: 6.1},
            4: {50: 6.1, 150: 5.6, 250: 6, 350:5.5, 450: 6.1}}

headers = ["Row", "Chip", "Voltage"]
with open('mycsvfile2.csv', 'w', newline='') as f:
    csv_writer = writer(f)
    # 写入表头
    csv_writer.writerow(headers)
    # 遍历嵌套字典逐行写入
    for row_val, chip_data in my_dict.items():
        for chip_val, voltage_val in chip_data.items():
            csv_writer.writerow([row_val, chip_val, voltage_val])

输出结果

生成的CSV文件内容如下,完全符合预期格式:

Row,Chip,Voltage
1,50,6
1,150,5
1,250,6
1,350,5.5
1,450,6.1
2,50,5.8
2,150,5
2,250,6.3
2,350,5.5
2,450,5.9
3,50,6
3,150,5.8
3,250,6
3,350,5.5
3,450,6.1
4,50,6.1
4,150,5.6
4,250,6
4,350,5.5
4,450,6.1

CSV默认使用逗号作为字段分隔符,用表格工具或文本编辑器打开时会自动按列对齐,和要求的排版效果一致。

如果需要保留原有拆分函数的代码结构,只需要修改循环部分的传参逻辑,将每行数据组装为键名和表头一致的字典再传入即可:

for k, v in my_dict.items():
    for ki, vi in v.items():
        single_row = {"Row": k, "Chip": ki, "Voltage": vi}
        append_csv('mycsvfile2.csv', single_row, headers)

该写法可正常运行,但频繁开关文件的性能低于一次性写入方案,非必要不推荐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:03:19