如何将dict写入具有列表作为其值的csv并为其添加标题

时间:2018-03-21 05:23:06

标签: python list csv dictionary header

我有一个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'] How the result in excel will look like

EDITTED:

这是我尝试过的代码:

with open (outputFileName, 'a') as outFile:
    writer = csv.writer(outFile)
    for r , t in enumerate(my_dict.items()):
        writer.writerow([r, *t])

但结果是一个单元格中的键,即一个单元格中的值(整个列表)。尚未对标题进行任何尝试

1 个答案:

答案 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

希望它有所帮助。