如何遍历字典列表并将值写为CSV中的各个列

时间:2019-09-11 21:25:29

标签: python-3.x dictionary export-to-csv

我有一个字典列表

d = [{'value':'foo_1','word_list':['blah1','blah2']},....,{'value':'foo_n','word_list':[' meh1','meh2']}]

我想将此内容写入到CSV文件中,其中所有“值”键都位于一列中,然后将“值”的word_list中的每个单词作为其自己的列。所以第一行是

foo_1 blah_1 blah_2

以此类推。

我不知道我有多少个词典,或者我在“ word_list”中有多少个单词。

我将如何在Python 3中执行此操作?

谢谢!

3 个答案:

答案 0 :(得分:0)

在将每一行写入文件之前,将每一行展平到普通列表可能是最简单的。像这样:

with open(filename, 'w') as file:
    writer = csv.writer(file)
    for row in data:
        out_row = [row['value']]
        for word in row['word_list']:
            out_row.append(word)
        csv.writerow(out_row)
    # Shorter alternative to the two loops:
    # csv.writerow((row['value'], *row['word_list']) for row in data)

答案 1 :(得分:0)

我想出了一个解决方案,但是有点杂乱(哇,没有“正确格式”,我就不能写一点代码了……真烦人):

with open('filename', 'w') as f:
    for key in d.keys():
      f.write("%s,"%(key))
    for word in d[key]:
      f.write("%s,"%(word))
    f.write("\n")

答案 2 :(得分:0)

您可以一次遍历字典,构造列表,然后使用csv模块写入数据,如我在此处所示

import csv

d = [{'value':'foo_1', 'word_list':['blah1', 'blah2']}, {'value': 'foo_n', 'word_list':['meh1', 'meh2']}]

with open('test_file.csv', 'w') as file:
    writer = csv.writer(file)
    for val_dict in d:
        csv_row = [val_dict['value']] + val_dict['word_list']
        writer.writerow(csv_row)

它应该适用于任意长度的单词列表和任意数量的词典。