将列表保存为csv文件

时间:2016-03-11 16:37:17

标签: python csv dictionary

这种格式的字典:

exec

我需要以csv格式保存它。

我这样做了:

d = {'key_1':['item_1','item_2','item_3'],'key_2':['item_1','item_2','item_3'],}

但是我的标题只有一行,项目只有一行,我希望每个项目都与pandas相同。

import csv

with open('output.csv', 'w') as f: 
    w = csv.DictWriter(f, d.keys())
    w.writeheader()
    w.writerow(d)

但当然在这种情况下不使用熊猫。

1 个答案:

答案 0 :(得分:3)

假设len(d['key_1']) == len(d['key_2'])

,此程序可以执行您想要的操作
import csv

d = {
    'key_1':['item_1','item_2','item_3'],
    'key_2':['2_item_1','2_item_2','2_item_3'],
}

with open('output.csv', 'w') as f:
    w = csv.writer(f)
    w.writerow(d.keys())
    w.writerows(zip(*d.values()))

结果:

key_1,key_2
item_1,2_item_1
item_2,2_item_2
item_3,2_item_3

如果值列表的长度可能不同,请尝试以下操作:

import csv
import itertools

d = {
    'key_1':['item_1','item_2','item_3'],
    'key_2':['2_item_1','2_item_2','2_item_3', '2_item_4'],
}

with open('output.csv', 'w') as f:
    w = csv.writer(f)
    w.writerow(d.keys())
    w.writerows(itertools.izip_longest(*d.values()))

结果:

key_1,key_2
item_1,2_item_1
item_2,2_item_2
item_3,2_item_3
,2_item_4