在Python中用csv写一个列表字典

时间:2016-03-23 18:56:49

标签: python python-2.7 csv dictionary

我有一个像{a: [1, 2, 3], b: [4, 5, 6], c: [7, 3, 2]}的字典,我想用Python写一个csv文件。我是csv文件:

col1,col2,col3,col4
a,1,2,3
b,4,5,6
c,7,3,2

我尝试使用CSV Dict编写器,但我无法获得值,因为这里是一个列表。

感谢任何帮助!

6 个答案:

答案 0 :(得分:0)

with open("out.csv","wb") as csv_out:
    # first the header
    csv_out.write(",".join("Col%d"%i for i in range(len(a_dict.values()[0]))+"\n")
    # then each row .... make sure its sorted by the keys ...
    for key,a_list in sorted(a_dict.items(),key=lambda row:row[0])
        x = [key,]
        x.extend(a_list)
        csv_out.write(",".join(str(i) for i in x)

答案 1 :(得分:0)

希望以下代码可以提供帮助:

fo = open("example.csv", "wr")
fo.write("col1,col2,col3,col4\n")
fo.write("a,1,2,3\n")
fo.write("b,4,5,6\n")
fo.write("c,7,8,9\n")
fo.close()

答案 2 :(得分:0)

>>> mydict
{'b': [4, 5, 6], 'c': [7, 3, 2], 'a': [1, 2, 3]}
>>> result ="\n".join(["{0} {1}".format(key, " ".join([str(x) for x in list_value])) for key, list_value in mydict.iteritems()])
>>> print result
b 4 5 6
c 7 3 2
a 1 2 3

将结果写入csv文件。

如果订单很重要,您可以使用OrderedDict

答案 3 :(得分:0)

d={'a': [1, 2, 3],'b': [4, 5, 6], 'c': [7, 3, 2]}
with open("result.txt","w+") as f:
    for k,v in d.items():
            alist=[k]+[str(r) for r in v]#alist=['a','1','2','3']
            line=' '.join(alist)+"\n"#line="a  1 2 3\n"
            f.write(line)

答案 4 :(得分:0)

只是为了练习,这是另一个版本;

mydict = {'a': [1, 2, 3], 'c': [7, 3, 2], 'b': [4, 5, 6]}

with open('test.csv','w') as f:
  for k,v in mydict.iteritems():
    f.write(str.join(',', [k]+[str(i) for i in v])+'\n')

它只是循环遍历字典项,为每个项生成一行。

通过创建一个数组生成每一行,其中键作为第一个元素,其值转换为后面的字符串。然后它使用逗号分隔符加入数组的元素。

答案 5 :(得分:0)

您可以使用Python的csv库执行此操作,如下所示:

import csv

my_dict = {"a" : [1, 2, 3], "b" : [4, 5, 6], "c" : [7, 3, 2]}

with open("output.csv", "wb") as f_output:
    csv_output = csv.writer(f_output)
    csv_output.writerow(['col1', 'col2', 'col3', 'col4'])

    for key in sorted(my_dict.keys()):
        csv_output.writerow([key] + my_dict[key])

给你:

col1,col2,col3,col4
a,1,2,3
b,4,5,6
c,7,3,2