按照日期时间值对Python字典进行排序

29

我有一个像这样的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个回答

21

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

sorted(dct, key=dct.get)

请查看排序迷你指南,了解本文以及其他排序技巧的详细说明。


6

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

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

0

这很容易,你只需要像这样做:

 from operator import itemgetter
 sorted(a.items(),key=itemgetter(1),reverse=True)

你不需要使用itemgetter,因为字典的get方法可以返回值(请参见@unutbu的答案)。 - Burhan Khalid

0

尝试使用以下方式获取字典dict的键列表:

[item[0] for item in sorted(dict.items(), key=lambda val: val[1])]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接