Python:将包含不同索引的字典列表写入CSV文件

时间:2016-06-17 12:01:49

标签: python-2.7 csv dictionary

我有一个列表字典,其中一些列表只有一个值,而其他列表有很多。

使用此代码,我得到了我想要的输出:

    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)!

1 个答案:

答案 0 :(得分:1)

您可以使用map(lambda *x: tuple(x), *my_dict.values())代替zip。这将使用None替换空元素,或者您可以使用itertools.izip_longest(*my_dict.values())csv会自动将None值留空。