Python 将词典写入CSV文件
我有很多这样的字典,其中键是年龄,值是这个年龄的人数。我把它们分成了多个字典Python 将词典写入CSV文件,python,Python,我有很多这样的字典,其中键是年龄,值是这个年龄的人数。我把它们分成了多个字典 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} 我想将它写入一个
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
试试下面的方法
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()
…如果密钥存在,请写入值。如果不只是用0填充。。。如果钥匙存在,你是什么意思?您希望存在哪些键?例如:if key in Age_Under50:Age_Under50.get(key,0)Age_50总共有6个键,因此我假设您将在第一列中得到44个0。我说得对吗?另外,80岁的范围是多少。80-?是的,44是正确的,因为它不存在。对于“age_80”>=80,它可以工作,但是我稍微更改了代码,尽管我更改的代码有一个问题。它在每次迭代中创建一个额外的行。cf.writerows(itertools.zip_最长(['Age_Under50']+[Age_50[k]表示50岁时的k],'Between_50[u 80']+[Age 50[u 80[k]表示50岁时的k],'Greater_80']+[Age_80[k]表示80岁时的k],fillvalue=0))当然可以。只要运行我更改的代码。它会创建一条额外的线。你能告诉我怎么解吗?它对我来说很好,在这里没有多余的零。蟒蛇3!!!对于您刚才提供的链接,它不会创建额外的行。但是请记住,在您没有使用的代码中(cf.writerows)。请运行最后一个代码,并打开csv文件。你会明白我在说什么,我修好了。这是怎么做的。f=打开(“test.csv”,“w”,换行=”)