用Python对字典(日期键)进行排序
我有一个字典,这个字典的键是日期(也就是时间)。我想把这个字典排序,让里面的值按照日期的顺序排列。这样,当我遍历这个字典的时候,就能按照时间的顺序处理这些项目。
我该怎么把这个字典按日期排序呢?
举个例子:
mydict = { '2000-01-01': {fld_1: 1, fld_2: 42}, '2000-01-02': {fld_1:23, fld_2: 22.17} }
注意:为了让例子简单,我这里用的是字符串,而不是日期时间。
6 个回答
5
字典里的东西是没有顺序的,也就是说你不能指望它们按照某种特定的顺序来存放。不过,你可以用 d.keys()
来获取一个键的列表,这个列表是可以排序的。你可以像下面这样遍历这个生成器。
def sortdict(d):
for key in sorted(d): yield d[key]
通过这样做,你就能按照时间顺序来遍历这些值了。
for value in sortdict(mydict):
# your code
pass
6
字典是不能排序的。如果你想要排序,可以用 sorted(mydict.keys())
来遍历字典的键。
22
如果你在使用 Python 2.7 以上版本或者 3.1 以上版本,你可以从你的字典中创建一个叫做 OrderedDict
from collections
的东西,然后逐个遍历它。
from collections import OrderedDict
ordered = OrderedDict(sorted(mydict.items(), key=lambda t: t[0]))
不过,根据你想做的事情,可能直接遍历你字典中排序后的键会更简单。