按日期时间值对python dict排序

Sort Python dict by datetime value

本问题已经有最佳答案,请猛点这里访问。

我有一本这样的Python字典:

1
2
3
4
5
{
   '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>)
}

按日期时间值对字典排序的最佳方法是什么?我正在查找按从最近到最旧顺序排列键的列表输出。


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

1
sorted(dct, key=dct.get)

请参阅"排序迷你操作"以获取有关此操作和其他排序技术的解释。


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

1
2
3
4
5
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))]

如果你只对钥匙感兴趣:

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

=> ['raspberry', 'apple', 'orange']


尝试获取字典dict的键列表,如下所示:

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

这真的很简单,你只要做到,就像:

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