2011-09-25 115 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