【问题标题】:python nested dict to csv with many columnspython将dict嵌套到具有多列的csv
【发布时间】:2015-09-20 22:23:19
【问题描述】:

我在 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

【问题讨论】:

    标签: python csv dictionary nested


    【解决方案1】:

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

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

    例子-

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

    【讨论】:

      【解决方案2】:

      您可以分两步完成:

      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,,,
      

      【讨论】:

        猜你喜欢
        • 2015-03-16
        • 2018-09-07
        • 1970-01-01
        • 1970-01-01
        • 2020-07-28
        • 2015-05-07
        • 1970-01-01
        • 2018-08-07
        • 2021-04-24
        相关资源
        最近更新 更多