将字典列表转换为CSV文件

时间:2018-08-26 18:26:21

标签: python list csv dictionary

我有一个这样的词典列表:

[
{'site1':'data1'},
{'site2':'data2'}
]

用此顺序的数据生成csv文件的正确方法是什么? :

row 1      row2
site1      data1
site2      data2

4 个答案:

答案 0 :(得分:2)

浏览字典并将它们写入文件。

list_of_dicts = [{'site1':'data1'},{'site2':'data2'}]
with open('sites.csv', 'w') as file:
    file.write('row1\trow2\n')
    for dictionary in list_of_dicts:
         file.write('\t'.join(list(dictionary.items())[0]) + '\n')

输出:

row1    row2
site1   data1
site2   data2

请注意,这要求每个词典中仅包含一个条目,如果词典中包含更多条目,则会随机选择一个,而忽略其他条目。处理字典中有多个条目的方法有很多,因此您必须在问题陈述中添加预期的行为以适应这些情况。

答案 1 :(得分:1)

这应该可以解决问题:)

data = [ {'site1':'data1'}, {'site2':'data2'} ]

with open ('list.csv', 'w') as f:
    for dict in data:
        for key, value in dict.items():
            text = key+','+value+'\n'
            f.writelines(text)

答案 2 :(得分:1)

您应该使用CSV编写器来确保正确转义任何嵌入的元字符(例如逗号和引号),否则{'site3':'data, data and more data'}之类的数据将损坏文件。

import csv

my_list = [{'site1':'data1'}, {'site2':'data2'}]

with open('test.csv', 'w', newline='') as out_fp:
    writer = csv.writer(out_fp)
    for d in my_list:
        writer.writerows(d.items())

如果需要,您可以使用itertools将其缩短

import itertools

with open('test.csv', 'w', newline='') as out_fp:
    csv.writer(out_fp).writerows(itertools.chain.from_iterable(
        d.items() for d in my_list))

答案 3 :(得分:1)

我喜欢使用pandas的数据帧制作数据并将其写入csv文件

a = [{'site1':'data1'},{'site2':'data2'}]
#Get each key and values from each dictionaries in the list
keys = []
vals = []
for a1 in a:
    for k, v in a1.items():
        keys.append(k)
        vals.append(v)
#make the dataframe from the keys and values
result = pd.DataFrame({'row1': keys, 'row2':vals})
#write the data into csv, use index=False to not write the row numbers
result.to_csv("mydata.csv", index=False)