语法 - 将字典保存为csv文件

时间:2013-11-01 13:58:01

标签: python csv dictionary

我正在尝试“清理”一些数据 - 我正在创建一个我需要保留的频道字典,然后我有一个if块来创建一个具有正确舍入的第二个字典。

字典看起来像这样:

{'time, s': (imported array), 'x temp, C':(imported array),
 'x pressure, kPa': (diff. imported array).....etc}

每个导入的数组都是1-d。

我在看this example,但我没有完全解析它,所以我最终得到了我想要的东西。

我想要的输出是一个csv文件(不管分隔符是空格还是逗号等),第一行是键,后续行只是值。

我觉得我缺少的是如何正确使用地图功能。

另外,我想知道我在使用DictWriter时是否使用DictReader

这是我最初的尝试:

with open((filename), 'wb') as outfile:
    write = csv.DictWriter(outfile, Fieldname_order)
    write.writer.writerow(Fieldname_order)
    write.writerows(data)

2 个答案:

答案 0 :(得分:1)

编辑:在此示例中,data是一个词典列表。 csv中的每一行都包含每个键的一个值。

使用标题行和数据行编写字典:

with open(filename, 'wb') as outfile: 
    writer = csv.DictWriter(outfile, fieldnames)
    writer.writeheader()
    writer.writerows(data)

要将数据作为字典读入,您需要使用DictReader

with open(filename, 'r') as infile:
    reader = csv.DictReader(infile)
    data = [row for row in reader]

答案 1 :(得分:1)

DictWriter的API与您拥有的数据结构不匹配。 DictWriter需要词典列表。你有一份清单。

您可以使用普通csv.writer

my_data = {'time, s': [0,1,2,3], 'x temp, C':[0,10,20,30],
 'x pressure, kPa': [0,100,200,300]}
import csv
with open('outfile.csv', 'w') as outfile:
   writer = csv.writer(outfile)
   writer.writerow(my_data.keys())
   writer.writerows(zip(*my_data.values()))

这将按任意顺序写入列,哪个顺序可能会从运行更改为运行。使订单保持一致的一种方法是用以下内容替换最后两行:

   writer.writerow(sorted(my_data.keys()))
   writer.writerows(zip(*(my_data[k] for k in sorted(my_data.keys()))))