Python:将嵌套字典写入 CSV

标签 python csv dictionary

我正在尝试将嵌套字典写入 .csv 文件。这是一个简单的例子:

import csv
import itertools

fields = [ 'org', '2015', '2014', '2013' ]
dw     = { 'orgname1': { '2015' : 2, '2014' : 1, '2013' : 1 },
           'orgname2': { '2015' : 1, '2014' : 2, '2013' : 3 },
           'orgname3': { '2015' : 1, '2014' : 3, '2013' : 1 }
        }

with open("test_output.csv", "wb") as f:
    w = csv.writer( f )
    years = dw.values()[0].keys()
    for key in dw.keys():
        w.writerow([key, [dw[key][year] for year in years]])

这为我提供了一个包含两列的表格:第一列包含 orgname;第二列包含 orgname;第二个包含 [2, 1, 1] (或子词典中的相应值)。我想要一个包含四列的表格:一列用于 orgname,然后三列用于相应的列表元素。

最佳答案

这看起来像是 DictWriter 的工作:

import csv
import itertools
import sys

fields = [ 'org', '2015', '2014', '2013' ]
dw     = { 'orgname1': { '2015' : 2, '2014' : 1, '2013' : 1 },
           'orgname2': { '2015' : 1, '2014' : 2, '2013' : 3 },
           'orgname3': { '2015' : 1, '2014' : 3, '2013' : 1 }
        }

w = csv.DictWriter( sys.stdout, fields )
for key,val in sorted(dw.items()):
    row = {'org': key}
    row.update(val)
    w.writerow(row)

关于Python:将嵌套字典写入 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29400631/

相关文章:

python - 如何将调试级别记录到文件,但仅在 python 屏幕上显示信息级别

python - 在 Python 中对列表进行分区

python - 模块 'scipy.optimize' 没有属性 'anneal'

python - 从 docker 容器将 csv 文件写入本地主机

java - 在 Map<String, Map<String, Double>> JSP 中通过键获取值

python - Alembic bulk_insert 到具有模式的表

python - 通过 Python 电子邮件库发送电子邮件会引发错误 "expected string or bytes-like object"

python - Pandas to_csv() 保存大数据帧速​​度慢

python - Networkx 读取军械调查 - ITN 综合传输网络?/读取 GML 文件

java - 在某些情况下使用 Java Stream 计算唯一字符并验证 String