+-
将多个字典写入csv文件?
这个问题已经在这里有了答案:            >             Writing a CSV horizontally                                    2个
多亏了这个其他线程,我才以Python初学者的身份将字典成功写入了csv:
Writing a dictionary to a csv file with one line for every ‘key: value’

dict1 = {0 : 24.7548, 1: 34.2422, 2: 19.3290}

csv看起来像这样:

0  24.7548
1  34.2422
2  19.3290

现在,我想知道用相同的键组织几个词典的最佳方法是什么.我希望将键作为第一列,然后将其后的dict值作为第一列,所有这些都具有第一行,以按字典名称区分各列.

当然,有很多线程试图做类似的事情,例如:Trouble writing a dictionary to csv with keys as headers and values as columns,但是没有以相同的方式构造我的数据(还…).也许词典必须先合并.

dict2 = {0 : 13.422, 1 : 9.2308, 2 : 20.132}
dict3 = {0 : 32.2422, 1 : 23.342, 2 : 32.424}

我理想的输出:

ID  dict1    dict2    dict3
0   24.7548  13.422   32.2422
1   34.2422  9.2308   23.342
2   19.3290  20.132   32.424

我还不确定键名的列名ID如何在那里工作.

最佳答案
使用csv模块并列出理解:

import csv

dict1 = {0: 33.422, 1: 39.2308, 2: 30.132}
dict2 = {0: 42.2422, 1: 43.342, 2: 42.424}
dict3 = {0: 13.422, 1: 9.2308, 2: 20.132}
dict4 = {0: 32.2422, 1: 23.342, 2: 32.424}

dicts = dict1, dict2, dict3, dict4

with open('my_data.csv', 'wb') as ofile:
    writer = csv.writer(ofile, delimiter='\t')
    writer.writerow(['ID', 'dict1', 'dict2', 'dict3', 'dict4'])
    for key in dict1.iterkeys():
        writer.writerow([key] + [d[key] for d in dicts])

请注意,默认情况下字典是无序的,因此,如果您希望键以升序排列,则必须对键进行排序:

for key in sorted(dict1.iterkeys(), key=lambda x: int(x)):
    writer.writerow([key] + [d[key] for d in dicts])

如果需要处理无法确定所有字典具有相同键的情况,则需要更改一些小内容:

with open('my_data.csv', 'wb') as ofile:
    writer = csv.writer(ofile, delimiter='\t')
    writer.writerow(['ID', 'dict1', 'dict2', 'dict3', 'dict4'])
    keys = set(d.keys() for d in dicts)
    for key in keys:
        writer.writerow([key] + [d.get(key, None) for d in dicts])
点击查看更多相关文章

转载注明原文:将多个字典写入csv文件? - 乐贴网