用Python对字典(日期键)进行排序

27 投票
6 回答
40618 浏览
提问于 2025-04-16 05:47

我有一个字典,这个字典的键是日期(也就是时间)。我想把这个字典排序,让里面的值按照日期的顺序排列。这样,当我遍历这个字典的时候,就能按照时间的顺序处理这些项目。

我该怎么把这个字典按日期排序呢?

举个例子:

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]))

不过,根据你想做的事情,可能直接遍历你字典中排序后的键会更简单。

撰写回答