python - 从 python 中的字典列表中写出一个 csv 文件

标签 python list csv dictionary

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

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

我的 list 是:

[{'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 应该是这样的:

Station|Year|Month|Day|Hour|Max Load

COAST|2013|01|01|10|12345

EAST|2013|01|01|10|12345

FAR_WEST|2013|01|01|10|12345

NORTH|2013|01|01|10|12345 NORTH_C|2013|01|01|10|12345

SOUTHERN|2013|01|01|10|12345

SOUTH_C|2013|01|01|10|12345

WEST|2013|01|01|10|12345

我正在尝试编写一个函数 save_file 来将列表保存在 csv 文件中,但我被困在如何获取字典的键并将它们写入行 ('COAST') 和列 ('年”、“月”、“日期”、“小时”、“最大负载”)。

def save_file(data, filename):
for i in range(len(data)):
    for k,v in data[i].items():
        print k
        for k1,v1 in v.items():
            print k1,v1


with open(filename,'wb') as f:
    fieldnames = ["Station","Year", "Month", "Date", "Hour", "Max Load"]
    wr = csv.writer(f, delimiter="|", fieldnames = fieldnames)
    wr.writeheader()

如有任何帮助,我们将不胜感激。

最佳答案

您可以使用 csv.DictWritercsv 文件中编写字典:

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)

关于python - 从 python 中的字典列表中写出一个 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30569692/

相关文章:

c - fscanf() 不读取和崩溃

python - 如何将 csv 文件读取为 dtype datetime64?

python - 了解 numpy 百分位计算

python - 了解包结构(模块 X.Y 没有属性 Z)

python - |= 运算符在 python 中有什么作用?

arrays - 如何对数组使用 Perl 的 grep 函数?

java - 查找列表是否包含另一个列表的每个元素的最佳优化方法是什么?

python - 在python中提取列表中的重复元素

python - 仅从 CSV 文件中读取选定的列,但保证所有其他列都相同

python - 标记数据时出错。 C 错误 : out of memory pandas python, 大文件 csv