我正在做以下事情:
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中有这个列表。关于其他列的顺序我不在乎。 但我不知道如何实现这一功能。
先谢谢
答案 0 :(得分:2)
如果您需要记住键 - 值对的顺序,则可以创建有序词典。
https://docs.python.org/2/library/collections.html#ordereddict-objects
答案 1 :(得分:1)
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
是使用元组列表而不是字典构造的。这是因为我们需要保证保存我们写入键和值的顺序。
答案 2 :(得分:0)
Python dict
键按其哈希值排序。如果您想了解更多信息,可以查看来自PyCon 2010的这个精彩视频: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()