用python从字典列表中写出csv文件

用python从字典列表中写出csv文件,python,list,csv,dictionary,Python,List,Csv,Dictionary,我是Python新手,我正在努力将字典列表保存到csv文件中 我想在csv文件中写出我的列表,使用管道字符作为分隔符 我的名单是: [{'COAST': {'Max_Load': 18779, 'Month': 8, 'Day': 13, 'Hour': 17, 'Year': 2013}}, {'EAST': {'Max_Load': 2380, 'Month': 8, 'Day': 5, 'Hour': 17, 'Year': 2013}}, {'FAR_WEST': {'Max_L

我是Python新手,我正在努力将字典列表保存到csv文件中

我想在csv文件中写出我的列表,使用管道字符作为分隔符

我的名单是:

[{'COAST': {'Max_Load': 18779, 'Month': 8, 'Day': 13, 'Hour': 17, 'Year': 2013}}, 
 {'EAST': {'Max_Load': 2380, 'Month': 8, 'Day': 5, 'Hour': 17, 'Year': 2013}}, 
 {'FAR_WEST': {'Max_Load': 2281, 'Month': 6, 'Day': 26, 'Hour': 17, 'Year': 2013}}, 
 {'NORTH': {'Max_Load': 1544, 'Month': 8, 'Day': 7, 'Hour': 17, 'Year': 2013}}, 
 {'NORTH_C': {'Max_Load': 24415, 'Month': 8, 'Day': 7, 'Hour': 18, 'Year': 2013}}, 
 {'SOUTHERN': {'Max_Load': 5494.157645, 'Month': 8, 'Day': 8, 'Hour': 16, 'Year': 2013}}, 
 {'SOUTH_C': {'Max_Load': 11433, 'Month': 8, 'Day': 8, 'Hour': 18, 'Year': 2013}}, 
 {'WEST': {'Max_Load': 1862, 'Month': 8, 'Day': 7, 'Hour': 17, 'Year': 2013}}, 
 {'ERCOT': {'Max_Load': 67595, 'Month': 8, 'Day': 7, 'Hour': 17, 'Year': 2013}}]
我的最终csv应该如下所示:

车站|年|月|日|小时|最大负荷

海岸| 2013 | 01 | 01 | 10 | 12345

东| 2013 | 01 | 01 | 10 | 12345

远西| 2013 | 01 | 01 | 10 | 12345

北| 2013 | 01 | 01 | 10 | 12345 北区| 2013 | 01 | 01 | 10 | 12345

南部| 2013 | 01 | 01 | 10 | 12345

南加州| 2013 | 01 | 01 | 10 | 12345

西部| 2013 | 01 | 01 | 10 | 12345

我正试图编写一个函数save_file,将列表保存在csv文件中,如上文所述,但我一直无法确定如何获取字典的键,并将它们同时写入行('COAST')和列('Year','Month','Date','Hour','Max Load')。

非常感谢您的帮助。

给您:
Here you go:

lst=...

subkeys=["Year","Month","Day","Hour","Max_Load"]
with open("test.csv", "w") as f:
    f.write("Station|Year|Month|Day|Hour|Max Load\n\n")
    for elem in lst:
        for key in elem.keys():
            f.write(key)
            f.write("|")
            for k, subkey in enumerate(subkeys):
                f.write(str(elem[key][subkey]))
                if k < len(subkeys)-1: f.write("|")
            f.write("\n\n")
lst=。。。 子键=[“年”、“月”、“日”、“小时”、“最大负载”] 打开(“test.csv”、“w”)作为f: f、 写入(“车站|年|月|日|小时|最大负荷\n\n”) 对于lst中的元素: 对于元素keys()中的键: f、 写入(键) f、 写(“|”) 对于k,枚举中的子键(子键): f、 写入(str(元素[键][子键]) 如果k
您可以使用在
csv
文件中编写词典:

list_of_dict=[{'COAST': {'Max_Load': 18779, 'Month': 8, 'Day': 13, 'Hour': 17, 'Year': 2013}}, 
 {'EAST': {'Max_Load': 2380, 'Month': 8, 'Day': 5, 'Hour': 17, 'Year': 2013}}, 
 {'FAR_WEST': {'Max_Load': 2281, 'Month': 6, 'Day': 26, 'Hour': 17, 'Year': 2013}}, 
 {'NORTH': {'Max_Load': 1544, 'Month': 8, 'Day': 7, 'Hour': 17, 'Year': 2013}}, 
 {'NORTH_C': {'Max_Load': 24415, 'Month': 8, 'Day': 7, 'Hour': 18, 'Year': 2013}}, 
 {'SOUTHERN': {'Max_Load': 5494.157645, 'Month': 8, 'Day': 8, 'Hour': 16, 'Year': 2013}}, 
 {'SOUTH_C': {'Max_Load': 11433, 'Month': 8, 'Day': 8, 'Hour': 18, 'Year': 2013}}, 
 {'WEST': {'Max_Load': 1862, 'Month': 8, 'Day': 7, 'Hour': 17, 'Year': 2013}}, 
 {'ERCOT': {'Max_Load': 67595, 'Month': 8, 'Day': 7, 'Hour': 17, 'Year': 2013}}]

import csv

with open('names.csv', 'w') as csvfile:
    fieldnames = ('Station','Year', 'Month', 'Day', 'Hour', 'Max_Load')
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames,delimiter='|')
    writer.writeheader()
    for d in list_of_dict:
          k,v=d.items()[0]
          v['Station']=k
          writer.writerow(v)

感谢您的帮助。我在运行代码**第148行时出错,在“_dict_to_list+”,“。join([repr(x)for x in error_fields]))ValueError:dict包含字段名以外的字段:“COAST”**,我不确定是否理解“d['Station']”。“站点”是列表中的键还是字段名中的键?谢谢你的帮助。你把字典放在字典的目录里了吗?
list_of_dict=[{'COAST': {'Max_Load': 18779, 'Month': 8, 'Day': 13, 'Hour': 17, 'Year': 2013}}, 
 {'EAST': {'Max_Load': 2380, 'Month': 8, 'Day': 5, 'Hour': 17, 'Year': 2013}}, 
 {'FAR_WEST': {'Max_Load': 2281, 'Month': 6, 'Day': 26, 'Hour': 17, 'Year': 2013}}, 
 {'NORTH': {'Max_Load': 1544, 'Month': 8, 'Day': 7, 'Hour': 17, 'Year': 2013}}, 
 {'NORTH_C': {'Max_Load': 24415, 'Month': 8, 'Day': 7, 'Hour': 18, 'Year': 2013}}, 
 {'SOUTHERN': {'Max_Load': 5494.157645, 'Month': 8, 'Day': 8, 'Hour': 16, 'Year': 2013}}, 
 {'SOUTH_C': {'Max_Load': 11433, 'Month': 8, 'Day': 8, 'Hour': 18, 'Year': 2013}}, 
 {'WEST': {'Max_Load': 1862, 'Month': 8, 'Day': 7, 'Hour': 17, 'Year': 2013}}, 
 {'ERCOT': {'Max_Load': 67595, 'Month': 8, 'Day': 7, 'Hour': 17, 'Year': 2013}}]

import csv

with open('names.csv', 'w') as csvfile:
    fieldnames = ('Station','Year', 'Month', 'Day', 'Hour', 'Max_Load')
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames,delimiter='|')
    writer.writeheader()
    for d in list_of_dict:
          k,v=d.items()[0]
          v['Station']=k
          writer.writerow(v)