我有一个字典列表
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中执行此操作?
谢谢!
答案 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)
它应该适用于任意长度的单词列表和任意数量的词典。