我如何按照日期时间对此词典进行排序? 有可能吗?
{
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)}}
}
答案 0 :(得分:4)
您可以在值上调用sorted()函数,并将datetime作为比较键:
sorted(d.values(), key=lambda item: item["l"]["created_on"])
答案 1 :(得分:3)
您可以获取字典d
的键的排序列表(字典不能自行排序):
>>> sorted(d.keys(), key=lambda k: d[k]['l']['created_on'])
[2, 1, 3]
PS:如果你真的需要一个带有排序键的字典,那么现在标准的OrderedDict类型就是你的朋友(正如在Frédéric的答案之后由rocksportrocker和agf发表的评论中所述)。
答案 2 :(得分:1)
你不能对dict()本身进行排序。该词典没有任何隐含的顺序:
>>> print dict(a=3, b=2, c=1)
{'a': 3, 'c': 1, 'b': 2}
如果您想保留字典的完整结构,则必须先将字典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