2016-06-12 3 views
0

다음은 애완 동물의 수와 그 중 몇 개입니까?Python - 값으로 정렬 된 dict의 항목 인쇄

{"Birds" : 2, "Cats" : 3, "Dogs" : 4} 

나는 그 반대의 경우도 마찬가지 작은 같은 애완 동물의 수, 또는 동일한 애완 동물의 가장 큰 수를 기준으로 정렬 항목을 인쇄 할.

('Dogs', 4) 
('Cats', 3) 
('Birds', 2) 

그리고

('Birds', 2) 
('Cats', 3) 
('Dogs', 4) 

방법이 작업을 수행 할 수 있습니다 :

출력 원하는?

아무 것도 가져 오지 않습니다. 사용

답변

0

내장 된 특별한 순위 기능 sorted 기능과 reverse=True 인수 :

for item in sorted(dict.items(), key=lambda x: x[1], reverse=True): 
    print(item) 

lambda x: -x[1]의 키도 (역 인수없이) 작동합니다.

0

람다 식 x[1]은 사전의 키 - 값 쌍의 키에 대해 값인 x[0]을 나타냅니다. 때로는이를 달성하기 위해 더 많은 코드를 작성하는 것이 좋습니다보기의 초보자의 관점에서 이해의 목적을 위해

from operator import itemgetter 

sorted(d.items(), key=itemgetter(1), reverse=True) 
sorted(d.items(), key=itemgetter(0)) 
0

:

sorted(d.items(), key=lambda x: x[1], reverse=True) 
sorted(d.items(), key=lambda x: x[0]) 

는 람다 EXPR없이, operator.itemgetter 같은 일을한다. 사전을 정렬 할 수 없으므로 각 키와 값 쌍을 가져 와서 간단한 함수로 목록을 반환 할 수 있습니다.

mydict = {"Birds" : 2, "Cats" : 3, "Dogs" : 4} 
def sortDict(dictionary): 
    sorted_values = sorted(dictionary.values()) 
    sorted_keys = sorted(dictionary.keys()) 
    #sorted_values.reverse() 
    #sorted_keys.reverse() 
    for key, value in zip(sorted_keys, sorted_values): 
     print(key, value) 
sortDict(mydict) 

결과를 되돌리려면 # 문자를 제거하십시오.

관련 문제