2010-11-25 24 views
2

私は多くのことをGoogleで検索し、見つかったは値に基づいて、辞書を注文する方法

tel = {'sape': 4139, 'sar': 2139, 'mape': 319, 'sipe': 29 'jack': 18} 

のように降順で値に基づいて、それを注文したい

tel = {'jack': 18, 'sape': 4139, 'sar': 2139, 'mape': 319, 'sipe': 29} 

のように辞書を持っています無関係の結果。そこに何か組み込み関数がありますか他の方法です。助けてください。どんな助けもありがとう

答えて

3

dictを注文する方法はありません。順序付き辞書または他の順序付きシーケンスを使用してください。

sorted(tel.iteritems(), key=operator.itemgetter(1), reverse=True) 
1
import operator 
sorted(my_dict.iteritems(), key=operator.itemgetter(1)) 

それはusefullすることができます。 python 2.7または3.1で

3

、あなたはOrderedDict使用することができます。

from collections import OrderedDict 
from operator import itemgetter 
tel = {'jack': 18, 'sape': 4139, 'sar': 2139, 'mape': 319, 'sipe': 29} 
newtel = OrderedDict(sorted(tel.items(), key=itemgetter(1), reverse=True)) 

より多くの例はWhat's Newドキュメントで見つけることができます。

EDIT:ラムダの代わりにitemgetterを使用して、気になる人を喜ばせるためです。古い方法をより明確にした人にお詫びします。

+1

ソートキーのラムダではなく、 'operator.itemgetter'を使うのは非常に難色です。 – fmark

関連する問題