首页 > 解决方案 > 将复杂的字典导出到 csv 文件中

问题描述

我有一本字典,其中的值是列表。这是一个例子:

例子:

d = {'20190606_CFMPB576run3_CF33456_12.RCC': [1.0354477611940298, '0.51'],
     '20190606_CFMPB576run3_CF33457_05.RCC': [1.0412757973733584, '1.09'],
     '20190606_CFMPB576run3_CF33505_06.RCC': [1.0531309297912714, '0.81']}

我正在尝试将此字典导出到csv文件中。像这个预期的输出:

预期输出:

file_name,citeria1,criteria2
20190606_CFMPB576run3_CF33456_12.RCC,1.0354477611940298, 0.51
20190606_CFMPB576run3_CF33457_05.RCC,1.0412757973733584,1.09
20190606_CFMPB576run3_CF33505_06.RCC,1.0531309297912714,0.81

为此,我编写了以下代码:

import csv

with open('mycsvfile.csv', 'w') as f:
    header = ["file_name","citeria1","criteria2"]
    w = csv.DictWriter(f, my_dict.keys())
    w.writeheader()
    w.writerow(d)

但它没有返回我想要的。你知道怎么解决吗?

标签: pythonpython-3.xcsvdictionary

解决方案


更改如下:

import csv

with open('mycsvfile.csv', 'w') as f:
    header = ["file_name", "citeria1", "criteria2"]
    w = csv.writer(f)
    w.writerow(header)
    for key, lst in d.items():
        w.writerow([key] + lst)

ADictWriter被赋予字段/列名称,并假定将作为字典提供的行具有与给定字段名称相对应的键。在您的情况下,数据结构是不同的。您可以使用简单csv.writer的,因为您的行是给定字典的键和值的混合。


推荐阅读