简体   繁体   English

如何将键从嵌套字典输出到csv

[英]How to output keys from nested dictionary to csv

I am trying to write a nested dictionary to CSV. 我正在尝试将嵌套字典编写为CSV。 I have been able to do this successfully, but because dictionary are not ordered, I can't tell which column is which. 我已经能够成功完成此操作,但是由于字典未排序,因此我无法确定哪一列是哪一列。 How can I output the keys as column headers to so that I can tell which column is which? 如何将键作为列标题输出到,以便知道哪一列是哪一列?

import datetime
import csv

d = {
        u'Project 1': {'Start Date': datetime.datetime(2015, 5, 6, 0, 0), 'Finish Date': datetime.datetime(2015, 12, 23, 0, 0)},
        u'Project 2': {'Start Date': datetime.datetime(2015, 1, 23, 0, 0), 'Finish Date': datetime.datetime(2015, 12, 22, 0, 0)}
}

milestones = d.values()[0].keys()
for key, value in d.items():
    print [key] + [d[key][date] for date in milestones]

writer = csv.writer(open('C:\\test.csv', 'wb'))
for key, value in d.items():
    writer.writerow([key] + [d[key][date] for date in milestones])

Use csv.DictWriter (this is an example, modify it to suit your needs): 使用csv.DictWriter (这是一个示例,对其进行修改以适合您的需要):

import csv

with open('test.csv', 'w') as csvfile:
    # put all keys you want to write here
    fieldnames = ['Project Name', 'Start Date', 'Finish Date']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()

    for project_name, project_dict in d.iteritems():
        # add project name
        row_dict = dict(
            [("Project Name", project_name)] + project_dict.items()
        )
        # write row
        writer.writerow(row_dict)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM