将列表的dict写入csv,指定列ord

2024-06-16 08:39:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在执行以下操作:

import csv 
d={'a':(1,2,3), '2':(4,5,6), '3':(7,8,9)}

csv_file = open('test.csv','w')
writefile = csv.writer(csv_file)
writefile.writerow(d.keys())

with open('test.csv', "wb") as outfile:
   writer = csv.writer(outfile)
   writer.writerow(d.keys())
   writer.writerows(zip(*d.values()))

这将导致一个.csv文件,我可以用进一步的工具处理。 不幸的是,dict不包含任何关于键的顺序。dict中的其中一个列表包含时间值。我希望这个列表首先在csv中。关于其他专栏的顺序我不在乎。 但我不知道这个功能。在

提前谢谢


Tags: csvtestimport列表顺序withopenkeys
3条回答

如果需要记住键值对的顺序,可以创建有序字典。在

https://docs.python.org/2/library/collections.html#ordereddict-objects

Pythondict键按其哈希排序。如果你想了解更多的信息,你可以看看这个来自Pycon2010的精彩视频:https://www.youtube.com/watch?v=C4Kc8xzcA68


可以将键排序到列表中,然后使用该列表访问值:

sorted_keys = sorted(d.keys()) # use this instead of d.keys()
sorted_values = (d[k] for k in sorted_keys) # use this instead of d.values()

collections包包含一个OrderedDict类,该类保证在访问键和值时与创建它们时的顺序相同。所以你可以这样做:

from collections import OrderedDict
d = OrderedDict([('a', (1,2,3)), ('2', (4,5,6)), ('3', (7,8,9))])
...rest of your code...

注意,OrderedDict是使用元组列表而不是字典构造的。这是因为我们需要保证我们写入键和值的顺序被保留。在

相关问题 更多 >