首页 > 解决方案 > 将字典写入 CSV 文件

问题描述

我有多个这样的字典,其中键是年龄,值是该年龄的人数。我将它们分组到多个字典中

    age_50 = {39: 66, 40: 83, 42: 217, 43: 53, 23: 33, 21: 28} 
    age50_80 = {59: 397, 65: 408, 61: 120, 67: 241, 68: 372, 78: 424, 76: 635 } 
    age_80 = {80: 93, 88: 425, 83: 165, 84: 58, 91: 88} 

我想将其写入 CSV 文件,每列都是字典,行是每个键的值。我希望我的输出如下表。如果键存在,则写入值。如果不只是填充 0:

Age_Under50    Between_50_80        Greater_80
66              397                   0
83              408                  93
217             120                 425
53              241                   0
33              372                 165
28              424                  58
0               635                  88

标签: python

解决方案


试试下面的东西

import csv, itertools

age_50 = {39: 66, 40: 83, 42: 217, 43: 53, 23: 33, 21: 28} 
age50_80 = {59: 397, 65: 408, 61: 120, 67: 241, 68: 372, 78: 424, 76: 635 } 
age_80 = {80: 93, 88: 425, 83: 165, 84: 58, 91: 88} 

cf = csv.writer(open("test.csv", "w"))

cf.writerows(
    itertools.zip_longest(
        ['Age_Under50']     + [age_50.get(k, 0)   for k in range(50)],
        ['Between_50_80']   + [age50_80.get(k, 0) for k in range(50,80)],
        ['Greater_80']      + [age_80.get(k, 0)   for k in range(80,100)],
        fillvalue=0
    )
)

对于窗户

import csv, itertools

age_50 = {39: 66, 40: 83, 42: 217, 43: 53, 23: 33, 21: 28} 
age50_80 = {59: 397, 65: 408, 61: 120, 67: 241, 68: 372, 78: 424, 76: 635 } 
age_80 = {80: 93, 88: 425, 83: 165, 84: 58, 91: 88} 

f = open("test.csv", "w", newline='')
cf = csv.writer(f)

cf.writerows(
    itertools.zip_longest(
        ['Age_Under50'] + [age_50[k] for k in age_50],
        ['Between_50_80']+[age50_80[k] for k in age50_80],
        ['Greater_80']+[age_80[k] for k in age_80],
        fillvalue=0
    )
)

f.close()

推荐阅读