我使用嵌套字典收集有关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
答案 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,,,