如何将列表字典写入csv文件?

时间:2016-06-23 16:27:38

标签: python list csv dictionary

我有这个列表字典,我想把它写在一个CSV文件中:

file2_Dict =  {'id': ' ', 'gender': ['M', 'M'], 'name': ['Smith', 'John'], 'city': ['Omaha','Lincoln']}

问题是并非字典的所有键都有一个项目列表作为值。在这种情况下,密钥(即'id')具有一个字符串作为值(即" ")。我尝试使用Tim Pietzcker提供的解决方案,但这只输出csv文件的标题(字典的键),如下所示:

id, gender, name, city

预期的输出应该是这样的:

 id, gender, name, city
  ,M,Smith,Omaha
  ,M,John,Lincoln

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

您可以预处理字典并将“空”值替换为空列表。然后使用itertools.izip_longest()代替zip()

import csv
from itertools import izip_longest

file2_Dict =  {'id': ' ', 'gender': ['M', 'M'], 'name': ['Smith', 'John'], 'city': ['Omaha','Lincoln']}

# replace space string values with empty lists
for key, value in file2_Dict.items():
    if value == ' ':
        file2_Dict[key] = []

with open("test.csv", "wb") as outfile:
   writer = csv.writer(outfile)
   writer.writerow(file2_Dict.keys())
   writer.writerows(izip_longest(*file2_Dict.values()))

哪会产生:

gender,city,id,name
M,Omaha,,Smith
M,Lincoln,,John