gpt4 book ai didi

python - 将字典打印到 csv?

转载 作者:太空宇宙 更新时间:2023-11-04 08:02:20 26 4
gpt4 key购买 nike

我有一个看起来像这样的字典:

defaultdict(<type 'int'>, {'201304': defaultdict(<type 'int'>, {'District - 1': 20, 'District - 12': 9, 'District - 6': 5, 'District - 5': 1, 'District - 4': 1, 'District - 3': 1, 'District - 2': 13, 'District - 15': 1, 'District - 14': 2}), '201305': defaultdict(<type 'int'>, {'District - 1': 20, 'District - 12': 9, 'District - 6': 5, 'District - 5': 1, 'District - 4': 1, 'District - 3': 1, 'District - 2': 13, 'District - 15': 1, 'District - 14': 2}), '201306': defaultdict(<type 'int'>, {'District - 1': 20, 'District - 12': 9, 'District - 6': 5, 'District - 5': 1, 'District - 4': 1, 'District - 3': 1, 'District - 2': 13, 'District - 15': 1, 'District - 14': 2}), '201301': defaultdict(<type 'int'>, {'District - 1': 20, 'District - 12': 9, 'District - 6': 5, 'District - 5': 1, 'District - 4': 1, 'District - 3': 1, 'District - 2': 13, 'District - 15': 1, 'District - 14': 2}), '201302': defaultdict(<type 'int'>, {'District - 1': 20, 'District - 12': 9, 'District - 6': 5, 'District - 5': 1, 'District - 4': 1, 'District - 3': 1, 'District - 2': 13, 'District - 15': 1, 'District - 14': 2}), '201303': defaultdict(<type 'int'>, {'District - 1': 20, 'District - 12': 9, 'District - 6': 5, 'District - 5': 1, 'District - 4': 1, 'District - 3': 1, 'District - 2': 13, 'District - 15': 1, 'District - 14': 2}), '201212': defaultdict(<type 'int'>, {'District - 1': 20, 'District - 12': 9, 'District - 6': 5, 'District - 5': 1, 'District - 4': 1, 'District - 3': 1, 'District - 2': 13, 'District - 15': 1, 'District - 14': 2})})

我想要一个看起来像这样的 cvs:

month,District - 1,District -2, District -3...... for however many districts there are 
201304,20,9,5,6,.....

我现在拥有的是:

with open('output.csv','wb') as output_file:
w= csv.writer(output_file)
w.writerows(months.items())

months 是我上面描述的字典的名称。不幸的是它输出:

201304  defaultdict(<type 'int'>, {'District - 1': 20, 'District - 12': 9, 'District - 6': 5, 'District - 5': 1, 'District - 4': 1, 'District - 3': 1, 'District - 2': 13, 'District - 15': 1, 'District - 14': 2})
201305 defaultdict(<type 'int'>, {'District - 1': 20, 'District - 12': 9, 'District - 6': 5, 'District - 5': 1, 'District - 4': 1, 'District - 3': 1, 'District - 2': 13, 'District - 15': 1, 'District - 14': 2})
201306 defaultdict(<type 'int'>, {'District - 1': 20, 'District - 12': 9, 'District - 6': 5, 'District - 5': 1, 'District - 4': 1, 'District - 3': 1, 'District - 2': 13, 'District - 15': 1, 'District - 14': 2})
201301 defaultdict(<type 'int'>, {'District - 1': 20, 'District - 12': 9, 'District - 6': 5, 'District - 5': 1, 'District - 4': 1, 'District - 3': 1, 'District - 2': 13, 'District - 15': 1, 'District - 14': 2})
201302 defaultdict(<type 'int'>, {'District - 1': 20, 'District - 12': 9, 'District - 6': 5, 'District - 5': 1, 'District - 4': 1, 'District - 3': 1, 'District - 2': 13, 'District - 15': 1, 'District - 14': 2})
201303 defaultdict(<type 'int'>, {'District - 1': 20, 'District - 12': 9, 'District - 6': 5, 'District - 5': 1, 'District - 4': 1, 'District - 3': 1, 'District - 2': 13, 'District - 15': 1, 'District - 14': 2})
201212 defaultdict(<type 'int'>, {'District - 1': 20, 'District - 12': 9, 'District - 6': 5, 'District - 5': 1, 'District - 4': 1, 'District - 3': 1, 'District - 2': 13, 'District - 15': 1, 'District - 14': 2})

我需要的是每个月 1 行:

month,District - 1,District -2, District - 3, .... (as many as show up)
201304,22,34,2,3,4,2,3,14
201305,34,22,1,3,5
201306,23,4,42,4,2,2,24,2,5,6,6,7,1

关于如何修改我的代码以执行此操作的任何建议?

最佳答案

你可以使用csv.DictWriter,但是因为它是一个二维字典,所以需要添加一个月份列:

#!python3
from collections import defaultdict
import csv

# populate the defaultdict "months"
# <deleted to keep short>

# Build a set of unique districts
s = set()
for k,v in months.items():
s.update(v.keys())

# open per requirements of csv.writer
with open('out.csv','w',newline='') as f:
# wrap in a DictWriter and specify column names
w = csv.DictWriter(f,fieldnames=['month']+list(sorted(s)))
w.writeheader()
for k,v in months.items():
# copy the dict of districts, add a month key and write the row
temp = dict(v)
temp['month'] = k
w.writerow(temp)

输出:

month,District - 1,District - 12,District - 14,District - 15,District - 2,District - 3,District - 4,District - 5,District - 6
201301,20,9,2,1,13,1,1,1,5
201302,20,9,2,1,13,1,1,1,5
201303,20,9,2,1,13,1,1,1,5
201304,20,9,2,1,13,1,1,1,5
201305,20,9,2,1,13,1,1,1,5
201306,20,9,2,1,13,1,1,1,5
201212,20,9,2,1,13,1,1,1,5

注意:如果使用 Python 2,请改用以下 open:

with open('out.csv','wb') as f:

关于python - 将字典打印到 csv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37981131/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com