27

我有一个这样的 Python 字典:

{
   'apple': datetime.datetime(2012, 12, 20, 0, 0, tzinfo=<UTC>),
   'orange': datetime.datetime(2012, 2, 4, 0, 0, tzinfo=<UTC>),
   'raspberry': datetime.datetime(2013, 1, 9, 0, 0, tzinfo=<UTC>)
}

按日期时间值对字典进行排序的最佳方法是什么?我正在寻找一个列表输出,其中的键按从最近到最旧的顺序排列。

4

4 回答 4

20

您可以像这样对键进行排序:

sorted(dct, key=dct.get)

请参阅Sorting Mini-HOW TO以了解有关此技术和其他排序技术的说明。

于 2013-08-09T17:10:42.287 回答
3

请记住,问题询问如何按日期时间值排序,这是一个可能的答案:

sorted(dct.items(), key=lambda p: p[1], reverse=True)

=> [('raspberry', datetime.datetime(2013, 1, 9, 0, 0)),
    ('apple', datetime.datetime(2012, 12, 20, 0, 0)),
    ('orange', datetime.datetime(2012, 2, 4, 0, 0))]

如果您只对键感兴趣:

[k for k, v in sorted(dct.items(), key=lambda p: p[1], reverse=True)]

=> ['raspberry', 'apple', 'orange']
于 2013-08-09T17:17:00.827 回答
0

这真的很容易,您只需执行以下操作:

 from operator import itemgetter
 sorted(a.items(),key=itemgetter(1),reverse=True)
于 2013-08-09T17:21:51.677 回答
0

尝试获取如下字典的键列表dict

[item[0] for item in sorted(dict.items(), key=lambda val: val[1])]
于 2013-08-09T17:58:32.177 回答