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

如何使用Python将嵌套字典写入指定格式的CSV文件?

解决方案

直接用Python内置的csv模块就能实现你要的CSV格式,以下是完整代码:

import csv

# 你的嵌套字典数据
daily_data = {'09-04-2018': {1: 11, 2: 5, 3: 1, 4: 1, 5: 0},
              '10-04-2018': {1: 5, 2: 1, 3: 1, 4: 1, 5: 0}}

# 获取所有count值并排序(保证输出顺序是1-5)
count_keys = sorted(next(iter(daily_data.values())).keys())
# 提取所有日期作为CSV的列名
date_columns = list(daily_data.keys())

# 写入CSV文件
with open('counts_by_date.csv', 'w', newline='') as csv_file:
    writer = csv.writer(csv_file)
    # 写入表头:count + 所有日期
    writer.writerow(['count'] + date_columns)
    # 逐行写入每个count对应的数据
    for count in count_keys:
        # 收集每个日期下该count的值,若日期无此count则默认填0(增强健壮性)
        row_data = [count] + [daily_data[date].get(count, 0) for date in date_columns]
        writer.writerow(row_data)
代码解释
  • 导入模块:用Python标准库的csv模块,不需要额外安装第三方包,兼容性拉满。
  • 提取关键数据:
    • count_keys:取第一个日期对应的内层字典的键,排序后保证输出的count是1到5的顺序;如果你的数据存在不同日期有不同count键的情况,可以改成sorted({k for d in daily_data.values() for k in d.keys()}),这样能获取所有唯一的count键。
    • date_columns:直接提取外层字典的键作为CSV的列名,保持你原始数据的日期顺序。
  • 写入CSV:
    • 用with语句打开文件,自动处理文件关闭,避免资源泄漏。
    • 先写入表头['count'] + date_columns,对应你要的第一行格式。
    • 循环每个count值,用列表推导式收集每个日期下的对应数值,get(count, 0)能处理某个日期缺失该count的情况,自动填充0,避免报错。

运行这段代码后,生成的CSV文件内容完全符合你的要求:

count,09-04-2018,10-04-2018
1,11,5
2,5,1
3,1,1
4,1,1
5,0,0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:45:43