2010-11-25 2 views
2

나는 내가 많이 봤 발견은 값을 기준으로 사전 주문 방식

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 수 있습니다.

3
파이썬 2.7에서

또는 3.1, 당신은 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 문서에서 찾을 수 있습니다.

편집 : 이제 람다 대신 itemgetter를 사용하여 관심있는 사람들을 기쁘게합니다. 낡은 방식으로 더 명확한 사실을 발견 한 사람들에게 사과합니다.

+1

정렬 키에 대해 람다 대신'operator.itemgetter'를 사용하는 것보다 파이썬 적입니다. – fmark

관련 문제