Python3从列表(每行上都有dict)到csv

Python3从列表(每行上都有dict)到csv,python,json,python-3.x,dictionary,Python,Json,Python 3.x,Dictionary,我有一个列表,每行都有一个字典类型,因此基本上我可以在循环中遍历该列表以获得每个字典记录。我需要从列表中创建一个csv文件,每个记录都是列表中的每个条目字典 我的清单如下: [{“字段1”:“字段”,“字段2”:“字段”…},{“字段1”:“字段”,“字段2”:“字段”…}] 我已经完成了下面的代码片段,但只存储了标题: with open('myfile', mode='wt', encoding='utf-8') as myfile: for lines in data:

我有一个列表,每行都有一个字典类型,因此基本上我可以在循环中遍历该列表以获得每个字典记录。我需要从列表中创建一个csv文件,每个记录都是列表中的每个条目字典

我的清单如下:

[{“字段1”:“字段”,“字段2”:“字段”…},{“字段1”:“字段”,“字段2”:“字段”…}]

我已经完成了下面的代码片段,但只存储了标题:

with open('myfile', mode='wt', encoding='utf-8') as myfile:
    for lines in data:
        myfile.write('\n'.join(lines))
        myfile.write('\n')
我一直在探索,但我不知道如何在一个循环中将它组合到列表的每一行,以保证每一条记录都来自行列表

谢谢你的帮助


谢谢。

这几乎是另一个问题的重复,但是注释系统不适合这么大的代码片段。只需使用for循环迭代您的dict列表,其中另一个问题的答案仅保留一行:

with open('myfile', mode='wt', encoding='utf-8') as myfile:
    writer = csv.DictWriter(myfile, data[0].keys())
    writer.writeheader()
    for line in data:
        writer.writerow(line)
您还可以使用
writerows
方法传递整个列表:

with open('myfile', mode='wt', encoding='utf-8') as myfile:
    writer = csv.DictWriter(myfile, data[0].keys())
    writer.writeheader()
    writer.writerows(data)

实际上,您可以使用pandas很好地解决这个问题:

import pandas as pd
df = pd.DataFrame(dict_list)
df.to_csv('output.csv', index=False)
下面是一个演示:

dict_list = [{'field1': 100, 'field2': '10:00', 'field3': 'cherries'}, 
{'field1': 500, 'field2': '6:00', 'field3': "cheese"}, 
{'field1':250, 'field2': '9:00', 'field3': 'beans'}]
输出

   field1 field2    field3
      100  10:00  cherries
      500   6:00    cheese
      250   9:00     beans
您可以使用
DictWriter.writerows
在数据的
列表上迭代

您可以在
DictWriter
的工作原理中看到

下面是
writerows
的规范:

csvwriter.writerows(行)“”

将所有元素写入行(如所述的行对象列表 上面)到编写器的文件对象,按照当前方言格式化


您能否更具体地说明
数据是什么?如果这是一个字典,也许您应该在
join()
中使用
line.values()
而不是
line
with open('myfile', 'wb') as f:
    # assign your headers
    w = csv.DictWriter(f, fieldnames=data[0].keys())
    # write headers
    w.writeheader()
    # write data
    w.writerows(data)