写入CSV文件,其中value是字典,值必须与键

时间:2017-08-08 19:25:13

标签: python python-3.x dictionary export-to-csv

我有一个字典输出,如下所示:

{'2016-07': {'open': 2, 'closed': 14}, '2016-12': {'open': 14, 'closed': 37}}

我需要创建一个CSV文件,其中每行如下所示:

2016-07, 2, 14
2016-12, 14, 37

以下是我对CSV方法的写作:

def send_to_csv():
    values = sort_by_year_month()
    with open('Issues_by_month.csv', 'w') as csv_file:
        file_writer = csv.writer(csv_file)
        file_writer.writerow(['Month',
                              'Opened Issues',
                              'Closed Issues',
                              ])
        for key, value in values.items():
            file_writer.writerow([key, value])

我想我只需要遍历该值然后将其写出来,但不确定。

2 个答案:

答案 0 :(得分:2)

要确保日期已排序,请尝试迭代其排序值:

for key in sorted(values.keys()):
    d = values[key]
    file_writer.writerow([key, d.get('open'), d.get('closed')])

答案 1 :(得分:1)

试试这个:

import csv

data = {
    '2016-07': {'open': 2, 'closed': 14},
    '2016-12': {'open': 14, 'closed': 37}
}

with open('output.csv', 'w') as csv_file:
    writer = csv.writer(csv_file)
    writer.writerow(['Month',
                     'Opened Issues',
                     'Closed Issues'])
    # Get the date
    for date in sorted(data):
        row = [date]
        # Append each value to the row
        for key, value in data[date].items():
            row.append(value)
        writer.writerow(row)

<强> output.csv

Month,Opened Issues,Closed Issues
2016-07,2,14
2016-12,14,37

replit.it

上试用