我正在尝试将列表字典写入CSV文件。我希望键是CSV文件的标题,以及与该键关联的列中的每个键相关联的值。 如果我的字典是:
{'600': [321.4, 123.5, 564.1, 764.1], '300': [12.7, 154.7, 327.5, 894.4], 'Position': [1,2,3,4]}
我尝试过使用csv.DictWriter,如下所示:
import csv
outputFile=open('chan_press_prof.csv','wb')
dictPress={'600': [321.4, 123.5, 564.1, 764.1], '300': [12.7, 154.7, 327.5, 894.4], 'Position': [1,2,3,4]}
fields=['Position','300','600']
writeFile = csv.DictWriter(outputFile, fieldnames=fields)
writeFile.writeheader()
writeFile.writerow(dictPress)
outputFile.close()
但是我弄得一团糟:
位置,300600 “[1,2,3,4]”,“[12.7,154.7,327.5,894.4]”,“[321.4,123.5,564.1,764.1]”
我尝试遵循以下建议:Dictionary of Lists to CSV in Python。 这更接近,但不起作用,因为列的顺序错误:
代码:
import csv
import StringIO
from itertools import izip_longest
outputFile=open('chan_press_prof.csv','wb')
dictPress={'600': [321.4, 123.5, 564.1, 764.1], '300': [12.7, 154.7, 327.5, 894.4], 'Position': [1,2,3,4]}
fields=['Position','300','600']
rows=izip_longest(*dictPress.values())
buf=StringIO.StringIO()
writeFile=csv.writer(outputFile)
writeFile.writerow(fields)
writeFile.writerows(rows)
outputFile.close()
输出: 位置,300,600 12.7,1,321.4 154.7,2,123.5 327.5,3,564.1 894.4,4,764.1
请注意,位置值(1,2,3,4)不在右栏中。
感谢任何帮助!
答案 0 :(得分:2)
我想做同样的事情,这对我有用。使用带*运算符的zip为我做了诀窍。同时注意写作单数和写作复数有助于将字典写入我想要的文件类型。
zd = zip(*dictionary.values())
with open('file.csv', 'w') as file:
writer = csv.writer(file, delimiter=',')
writer.writerow(dictionary.keys())
writer.writerows(zd)
输出如下所示,
gender,age,state,race,weights,educ
1,39,32,06,0.57,8
2,35,33,06,0.93,5
1,39,11,06,0.83,5
您的示例应该只使用相同的更改字典作为包含数据的字典。