将带有列表的dict另存为csv-fi

2024-06-28 19:17:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本这样格式的词典:

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

我需要以csv格式保存它

我做到了:

import csv

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

但我只得到一行标题和一行以上的项目,我希望每个项目在不同的行,因为你得到熊猫

df = pd.DataFrame(d)
df.to_csv('output.csv')

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


Tags: csv项目keyimportdfoutputas格式
1条回答
网友
1楼 · 发布于 2024-06-28 19:17:19

这个程序做你想做的,假设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

相关问题 更多 >