我有一个Dict,它的值是一个列表,我想将它写入一个csv文件,其中键和列表中的所有项(值)都在cvs文件的单独单元格中,这就是我的Dict看起来像:
my_dict = {'r1':[1,0,0,1,1,0,1,0],'r2':[0,1,1,0,1,1,0,0]}
所以我希望我在excel的第一行中的第一个单元格包含r1,并且分别在单独的单元格中列表中的所有项目。然后我需要添加这样的标题(它可以是一个列表,如:
l = ['R','t1','t2','t3','t4','t5','t6','t7','t8']
EDITTED:
这是我尝试过的代码:
with open (outputFileName, 'a') as outFile:
writer = csv.writer(outFile)
for r , t in enumerate(my_dict.items()):
writer.writerow([r, *t])
但结果是一个单元格中的键,即一个单元格中的值(整个列表)。尚未对标题进行任何尝试
答案 0 :(得分:3)
问题是: -
enumerate()
函数为可迭代添加计数器。因此,对于游标中的每个元素,都会生成一个带有(counter, element)
的元组; for循环分别将其绑定到row_number和row。它是内置的生成器功能,请参阅
http://docs.python.org/2/library/functions.html#enumerate。
以下是修改后的代码。
import csv
my_dict = {'r1':[1,0,0,1,1,0,1,0], 'r2' : [0,1,1,0,1,1,0,0]}
outputFileName = 'test32.csv'
with open (outputFileName, 'a+') as outFile:
writer = csv.writer(outFile)
writer.writerow(['R','t1','t2','t3','t4','t5','t6','t7','t8'])
for r , t in my_dict.items():
writer.writerow([r, *t])
输出 -
R,t1,t2,t3,t4,t5,t6,t7,t8
r1,1,0,0,1,1,0,1,0
r2,0,1,1,0,1,1,0,0
希望它有所帮助。