Python dict以列格式转换为csv

Python dict以列格式转换为csv,python,csv,Python,Csv,我有下面的格言 items = {'people': ['Peter', 'Danny'], 'numbers': [1,2,3,4], 'cities': ['London']} 我想按列将dict写入CSV文件,即采用以下格式: people,numbers,cities Peter,1,London Danny,2, ,3, ,4, 我当前的方法不起作用,因为我按行获取CSV文件: people,Peter,Danny numbers,1,2,3,4 cities,

我有下面的格言

items = {'people': ['Peter', 'Danny'], 'numbers': [1,2,3,4], 'cities': ['London']}
我想按列将dict写入CSV文件,即采用以下格式:

people,numbers,cities
Peter,1,London
Danny,2,
     ,3,
     ,4,
我当前的方法不起作用,因为我按行获取CSV文件:

people,Peter,Danny
numbers,1,2,3,4
cities,London

我该怎么做呢?

你可以使用
itertools.zip\u longest
itertools.izip\u longest
在Python2中):

输出:

people,numbers,cities
Peter,1,London
Danny,2,
     ,3,
     ,4,

一种简单的方法是计算字典中最长列表的长度,然后将
'
附加到所有列表中,使它们具有此长度

num_rows = max((len(x) for x in items.values()))
items = {k: items[k] + [''] * (num_rows - len(items[k])) for k in items}
print(items)
#{'cities': ['London', '', '', ''],
# 'numbers': [1, 2, 3, 4],
# 'people': ['Peter', 'Danny', '', '']}
然后使用
csv
模块将
dict
写入csv

或者,您可以从字典中构建一个
数据框

import pandas as pd
df = pd.DataFrame(items)
print(df)
#   cities  numbers people
#0  London        1  Peter
#1                2  Danny
#2                3       
#3                4       

现在,您可以使用
to_csv()
方法将其写入文件。

或者您可以使用Pandas,这只需要两行代码

import pandas as pd

pd.DataFrame(items).fillna('').to_csv('file_path')

如果您不想依赖像pandas这样的外部依赖项,那么可以使用纯python中的
join
方法
str
对象快速实现这一点

items={'people':['Peter','Danny'],
“数字”:[1,2,3,4],
“城市”:[“伦敦”]}
def至_csv(项目):
#列名
header=',.join(列表(items.keys()))
#建筑线
行=列表()
max_len=max([len(items[key]),用于输入items.keys())
对于范围内的i(最大值):
行。追加(
“,”加入(
[str(items[key][i])用于输入项。key()
如果i
产出:

people,numbers,cities
Peter,1,London
Danny,2,
,3,
,4,

你可以看看熊猫包,它有很多方法可以做到这一点。
people,numbers,cities
Peter,1,London
Danny,2,
,3,
,4,