Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我如何按日期时间对这条记录进行排序?_Python_Datetime_Dictionary - Fatal编程技术网

Python 我如何按日期时间对这条记录进行排序?

Python 我如何按日期时间对这条记录进行排序?,python,datetime,dictionary,Python,Datetime,Dictionary,我如何按日期时间对这条记录进行排序? 可能吗 { 1: {'l':{'created_on': datetime.datetime(2011, 9, 29, 17, 39, 26)}}, 2: {'l':{'created_on': datetime.datetime(2011, 9, 23, 17, 39, 26)}}, 3: {'l':{'created_on': datetime.datetime(2011, 9, 30, 17, 39, 26)}} } 可以使用datetime作为比较

我如何按日期时间对这条记录进行排序? 可能吗

{
1: {'l':{'created_on': datetime.datetime(2011, 9, 29, 17, 39, 26)}},
2: {'l':{'created_on': datetime.datetime(2011, 9, 23, 17, 39, 26)}},
3: {'l':{'created_on': datetime.datetime(2011, 9, 30, 17, 39, 26)}}
}
可以使用datetime作为比较键对值调用函数:

sorted(d.values(), key=lambda item: item["l"]["created_on"])
不能对dict()本身进行排序。dict没有隐含顺序:

>>> print dict(a=3, b=2, c=1)
{'a': 3, 'c': 1, 'b': 2}
如果你想保留完整的dict结构,你必须首先将dict
dd
平铺成一个列表
li
。然后可以使用
datetime
值作为键进行排序:

import operator 

dd = { 1: ..... }

li = [] 

for (i, it) in dd.items():
    for (l, it1) in it.items():
        for (c, dt) in it.items():
            li.append((i, l, c, dt))
li.sort(key=operator.itemgetter(3))

print li

您可以获得字典
d
的键的排序列表(字典本身无法排序):


PS:如果你真的需要一本带有排序键的词典,现在的标准类型是你的朋友(如Frédéric回答后rocksportrocker和agf的评论所述)。

如果你想保留所有信息:排序(d.items(),key=lambda k,it:it[“l”[“created_on”])如果您想将@rocksportrocker方法作为映射返回,您可以将其包装在一个
OrderedDict()
中。我不知道这个版本如何保持完整的结构,或者
如何排序(d.items()…
失败?特别是因为它可以包装在一个
OrderedDict
中以获取映射,而这不能。它保留第一级的键,如果您迭代值()确定,则会丢失,但如果使用
项()则不会
不会变平,但保留了
dict的深度-
——所以说你必须将其变平是错误的。你真的应该在这个答案中添加这个注释,因为这是最好的方法。
>>> sorted(d.keys(), key=lambda k: d[k]['l']['created_on'])
[2, 1, 3]