2011-09-25 205 views
1

可能重复:
Python: Sort a dictionary by value排序的字典在python

我需要值从大到小的顺序对原词典进行排序。
由于我有号码和我有一些日期和时间(字符串)。

这意味着我有:

{1: '2011-09-25 16:28:18', 2: '2011-09-25 16:28:19', 3: '2011-09-25 16:28:13', 4: '2011-09-25 16:28:25'} 

我想有:

{4: '2011-09-25 16:28:25', 2: '2011-09-25 16:28:19', 1: '2011-09-25 16:28:18', 3: '2011-09-25 16:28:13'} 

请看看时间(值)。我想按降序排列时间。这意味着,最近的时间在先。

在此先感谢!

回答

3
import operator 
x = { 1: '2011-09-25 16:28:18', 
     2: '2011-09-25 16:28:19', 
     3: '2011-09-25 16:28:13', 
     4: '2011-09-25 16:28:25', 
     } 
sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1), reverse=True) 

print(sorted_x) 

这导致的(键,值)元组的列表:

[(4, '2011-09-25 16:28:25'), 
(2, '2011-09-25 16:28:19'), 
(1, '2011-09-25 16:28:18'), 
(3, '2011-09-25 16:28:13')] 
3

Python builtin dict字典没有排序,所以你不能这样做,你需要一个不同的容器。

使用Python 3.1或2.7,您可以使用collections.OrderedDict。对于较早的版本,请参阅recipe

+0

好了,但我可以拿这本字典,并责令通过把它放在一个新的字典什么的?这将是一个很好的方法。我不在乎使用不同的容器。我只是不知道该怎么做:/ – user963658

+0

OrderedDict是按键排序而不是值。你需要明确地按值 –

+0

排序它Ordered!= sorted。人们可以使用有序性来对其进行排序,但保持适度复杂。如果你偶尔需要排序(不管是什么)排序(键值)对,那么使用'sorted'和'.iteritems'可能会更容易。 – delnan