python嵌套dict到csv有很多列

时间:2015-07-03 07:06:59

标签: python csv dictionary nested

我使用嵌套字典收集有关siggragh大学的信息,就像这样

universityDict['utah'][2008] = 11
universityDict['utah'][2009] = 0

意味着犹他州在2008年被提名11次,在2009年被提名0次。(假设) 因为我有很多专栏 - 2008年2009年2010年......等等。 如何以简洁的方式将它们输出到csv文件中?

    for key,value in universityDict.items():
    writer.writerow({'university': key, '2008':value[2008] })#not this way

我希望csv像:

university,2006,2007

utah,4,8

mit,0,4

2 个答案:

答案 0 :(得分:0)

假设缩进问题不是一个真正的问题,那么你在代码中做错了。

在第一个循环中,您需要遍历嵌套字典并将它们放入csv。

示例 -

for key,value in universityDict.items():
    d = {'university': key}
    d.update(value)

    writer.writerow(d)

答案 1 :(得分:0)

您可以分两步完成:

import csv

universityDict = {'arizon': {2006:  4, 2007:  3},
                  'ohio':   {2008:  3, 2009: 10, 2010: 5},
                  'utah':   {2008: 11, 2009:  0}}

# first determine what years are present to use to define the csv fieldnames
years = set((year for nominations in universityDict.values()
                    for year in nominations))
fieldnames =['university'] + sorted(years)

# next write the csv file and convert nested nominations to data for row
with open('university_nominations.csv', 'w', newline='') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames)
    writer.writeheader()
    for university,nominations in universityDict.items():
        row = {'university': university}
        row.update(nominations)
        writer.writerow(row)

创建的csv文件的内容:

university,2006,2007,2008,2009,2010
ohio,,,3,10,5
utah,,,11,0,
arizon,4,3,,,
相关问题