如何将字典写入CSV文件?

时间:2020-01-24 00:08:55

标签: python csv

node_dict = {}
node_dict['brand'] = ['tacobell']
node_dict['category'] = ['food', 'fastfood']
node_dict['product'] = ['a', 'b', 'c', 'd']

我想将其写入CSV文件,例如:

brand        category     product

tacobell     food         a      
             fastfood     b
                          c
                          d

在每一列中,品牌,类别,产品的行数可能不同。例如,在“品牌”下,只有一行,第二行和第三行将为空。

如何将它们写入CSV文件?我以为我应该逐列写。

3 个答案:

答案 0 :(得分:4)

使用pandas的一种方式:

import pandas as pd

df = pd.concat([pd.Series(v, name=k) for k,v in node_dict.items()], 1)
print(df)

输出:

      brand  category product
0  tacobell      food       a
1       NaN  fastfood       b
2       NaN       NaN       c
3       NaN       NaN       d

然后您可以使用df.to_csv将其制作为csv文件:

print(df.to_csv('/path/you/want.csv', sep='\t', index=False))

输出:

brand   category    product
tacobell    food    a
    fastfood    b
        c
        d

答案 1 :(得分:1)

或使用以下代码:

df = pd.DataFrame(dict(zip(node_dict, map(pd.Series, node_dict.values()))))
df.to_excel('/path/to/file.xlsx', sep='\t', index=False)

答案 2 :(得分:1)

如果您要不使用pandas的解决方案:

node_dict = {}
node_dict['brand'] = ['tacobell']
node_dict['category'] = ['food', 'fastfood']
node_dict['product'] = ['a', 'b', 'c', 'd']

import csv
from itertools import zip_longest

with open('data.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(node_dict)
    for v in zip_longest(*node_dict.values(), fillvalue=''):
        writer.writerow(v)

创建此csv:

enter image description here