Python 语法-将词典另存为csv文件

Python 语法-将词典另存为csv文件,python,csv,dictionary,Python,Csv,Dictionary,我正在尝试“清理”一些数据-我正在创建一个需要保留的通道字典,然后我有一个if块来创建第二个具有正确舍入的字典 字典如下所示: {'time, s': (imported array), 'x temp, C':(imported array), 'x pressure, kPa': (diff. imported array).....etc} 每个导入的数组都是一维的 我一直在看,但是我没有找到解析它的方法,所以我最终得到了我想要的 我想要的输出是一个csv文件(不管分隔符是空格还是逗号

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

字典如下所示:

{'time, s': (imported array), 'x temp, C':(imported array),
 'x pressure, kPa': (diff. imported array).....etc}
每个导入的数组都是一维的

我一直在看,但是我没有找到解析它的方法,所以我最终得到了我想要的

我想要的输出是一个csv文件(不管分隔符是空格还是逗号或其他什么),第一行是键,后面的行只是值

我觉得我缺少的是如何正确使用map函数

另外,我想知道我是否在使用
DictWriter
而我应该使用
DictReader

这是我最初尝试的:

with open((filename), 'wb') as outfile:
    write = csv.DictWriter(outfile, Fieldname_order)
    write.writer.writerow(Fieldname_order)
    write.writerows(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]
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()))

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

您可以使用普通的
csv.writer

with open(filename, 'r') as infile:
    reader = csv.DictReader(infile)
    data = [row for row in reader]
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()))))

我不明白。我怎么告诉它从哪本字典开始写呢?误解了。您正在写入文件的词典是
data
,在本例中:
writer.writerows(data)
。谢谢!现在,我的字段名出现了一个值错误。关于如何修复我的字段名,您有什么指导吗?我有一张单子,我把它们都排好了,但它吐在字典里第一个用的单子上。它决定‘油压,psi’实际上是O,i,l,,P,r,e,s,s,u,r,e,,,P,s,iStep返回一秒钟:您应该向DictWriter发送一个字典列表(数据应该是字典列表)。我现在在你的问题中看到你的字典包含数组。相反,您可以有一个字典列表,其中每行数据都是自己的字典。FieldName应该是一个字段名列表,按您希望打印的顺序排列:
['time,s','x temp,C','x pressure,kPa',等等]
谢谢!这解决了我的问题。