2017-12-10 1 views
0

일부 문자열을 분석하고 그 횟수를 계산하려고합니다. 이 데이터는 사전에 저장됩니다. max 함수를 사용한다면 가장 높은 숫자가 인쇄됩니다.사전에서 최대 값을 찾는 방법

이렇게하면 암소가 최대가됩니다. 어떻게 defaultdict로 카운트를 모두 인쇄 할 수

count = {"cow": 4, "moo": 4, "sheep": 1} 
cow, moo 

답변

4

왜 간단하게를?

mx = max(count.values()) 
print([k for k, v in count.items() if v == mx]) 
# ['cow', 'moo'] 

라인 두개의 괄호 식은 list comprehension 번리스트 형상 물체 (AN "반복 가능")를 통해 실행하고 따라 간다 새로운리스트를 생성하는 for 루프 본질적 속기이다. 이 경우 미묘한 점은 튜플을 푸는 것에 의해 값이 동시에 할당되는 두 개의 루프 변수 (kv)가 있다는 것입니다 (.items()이 차례로 쌍 (키, 값)을 반환 함). 여기에 지능형리스트를 요약하는 것은 거의 비슷하다 :

result = [] 
for k, v in count.items(): 
    if v == mx: 
     result.append(k) 

그러나 지능형리스트는 빠르게 실행하고 또한 당신이 그것에 익숙해 일단 쉽게 읽을 수 있습니다.

+0

감사합니다. [this] (https://stackoverflow.com/questions/12402015/print-the-key-of-the-max-value-in-a-dictionary-the-pythonicway)와 같은 다른 게시물을보고있었습니다. 그러나 그들은 하나 이상의 최대 값에 대해 말하는 것처럼 보이지 않았습니다. 미안 해요, 이거 처음이에요! 인쇄 기능의 코드가 어떻게 작동하는지 설명해 주시겠습니까? –

+0

@KOOTSHOOTS 물론 대답을 업데이트 할 것입니다. –

1

그냥 그룹에 "소"와 "무"를 얻을, 최대 걸릴 것 :

from collections import defaultdict 

count = {"cow": 4, "moo": 4, "sheep": 1} 

d = defaultdict(list) 
for animal, cnt in count.items(): 
    d[cnt].append(animal) 

print(dict(d)) 
# {4: ['cow', 'moo'], 1: ['sheep']} 

print(max(d.items())[1]) 
# ['cow', 'moo'] 
관련 문제