我有一个列表字典,其中一些列表只有一个值,而其他列表有很多。
使用此代码,我得到了我想要的输出:
import csv
from collections import OrderedDict
my_dict = OrderedDict()
my_dict["Header1"] = [1,2,3]
my_dict["Header2"] = [4,5,6]
#if file doesn't exist...
with open('mycsv.csv', 'wb') as f:
w = csv.writer(f, delimiter=';')
w.writerow(my_dict.keys())
with open('mycsv.csv', 'ab') as f:
w = csv.writer(f, delimiter=';')
w.writerows(zip(*my_dict.values()))
看起来有点像:
头1;头2
1; 4
2; 5
3; 6
但在我的情况下,当我有这种列表的字典时:
my_dict["Header1"] = [1,2,3]
my_dict["Header2"] = [4]
我得到的输出如下:
头1;头2
1; 4
当我想要:
头1;头2
1; 4
2;
3;
有关如何解决此问题的任何建议?
提前谢谢(对不起任何糟糕的线程格式,这是我的第一个问题:P)!
答案 0 :(得分:1)
您可以使用map(lambda *x: tuple(x), *my_dict.values())
代替zip
。这将使用None
替换空元素,或者您可以使用itertools.izip_longest(*my_dict.values())
。 csv
会自动将None
值留空。