在Python中对字典(带日期键)进行排序

sky*_*gle 16 python dictionary

我有一本字典.键是日期(日期时间).我需要对字典进行排序,以便字典中的值按日期排序 - 这样通过迭代字典,我按照所需的时间顺序(即日期/时间)顺序处理项目.

我怎么可以按日期排序这样的字典?

例:

mydict = { '2000-01-01': {fld_1: 1, fld_2: 42}, '2000-01-02': {fld_1:23, fld_2: 22.17} }
Run Code Online (Sandbox Code Playgroud)

注意:我在这里使用字符串而不是datetime,以保持示例简单

Dav*_*ebb 17

如果你使用的是Python 2.7+或3.1+,你可以OrderedDictcollections你的字典中创建一个from,然后迭代它.

ordered = OrderedDict(sorted(mydict.items(), key=lambda t: t[0]))
Run Code Online (Sandbox Code Playgroud)

但是,根据您想要做的事情,可能更容易从您的dict迭代排序的键列表.


Ign*_*ams 6

字典是无法分类的。sorted(mydict.keys())而是迭代。

  • 如果您愿意,也可以说“sorted(mydict)”。 (4认同)

Jun*_*ter 5

字典从不按某种顺序存储任何内容.但是您可以获得d.keys()可以对其进行排序的密钥列表.迭代下面的生成器.

def sortdict(d):
    for key in sorted(d): yield d[key]
Run Code Online (Sandbox Code Playgroud)

使用此功能,您将能够按时间顺序迭代值.

for value in sortdict(mydict):
    # your code
    pass
Run Code Online (Sandbox Code Playgroud)