Как преобразовать этот список словарей в файл csv? [Python]

У меня есть список словарей, которые выглядят примерно так:

toCSV = [{'name':'bob','age':25,'weight':200},{'name':'jim','age':31,'weight':180}]

Что мне делать, чтобы преобразовать это в файл csv, который выглядит примерно так:

name,age,weight
bob,25,200
jim,31,180

Ответ 1

import csv
toCSV = [{'name':'bob','age':25,'weight':200},
         {'name':'jim','age':31,'weight':180}]
keys = toCSV[0].keys()
with open('people.csv', 'wb') as output_file:
    dict_writer = csv.DictWriter(output_file, keys)
    dict_writer.writeheader()
    dict_writer.writerows(toCSV)

EDIT: мое предыдущее решение не обрабатывает заказ. Как отметил Wilduck, DictWriter здесь более уместен.

Ответ 2

В модуле csv Python есть DictWriter, который, вероятно, будет полезен.

Ответ 3

это когда у вас есть один список словарей:

import csv
with open('names.csv', 'w') as csvfile:
    fieldnames = ['first_name', 'last_name']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})

Ответ 4

Поскольку @User и @BiXiC попросили помочь с UTF-8 здесь вариант решения от @Matthew. (Мне не разрешено комментировать, поэтому я отвечаю.)

import unicodecsv as csv
toCSV = [{'name':'bob','age':25,'weight':200},
         {'name':'jim','age':31,'weight':180}]
keys = toCSV[0].keys()
with open('people.csv', 'wb') as output_file:
    dict_writer = csv.DictWriter(output_file, keys)
    dict_writer.writeheader()
    dict_writer.writerows(toCSV)