Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 딕셔너리에서 가장 큰 값 3개 찾는 방법

이 글에서는 파이썬 딕셔너리(Dictionary)에서 가장 큰 값을 가진 항목 3개를 추출하는 방법을 알아보겠습니다.

문제 정의

하나의 딕셔너리가 주어졌을 때, 값(value)이 가장 큰 상위 3개의 키-값 쌍을 출력해야 합니다.

이 문제를 해결하는 대표적인 방법은 두 가지가 있습니다. 각각의 방법을 예제와 함께 살펴보겠습니다.

방법 1: collections.Counter() 함수 활용

파이썬 표준 라이브러리의 collections 모듈에 있는 Counter 클래스를 사용하면 most_common() 메서드로 빈도수(또는 값)가 높은 순서대로 요소를 손쉽게 가져올 수 있습니다.

예제 코드

# collections 모듈 임포트
from collections import Counter

# 딕셔너리 정의
my_dict = {'T': 23, 'U': 22, 'T': 21, 'O': 20, 'R': 32, 'S': 99}

k = Counter(my_dict)

# 가장 큰 값 3개 추출
high = k.most_common(3)

print("값이 가장 큰 3개의 항목:")
print("키 : 값")
for i in high:
    print(i[0], " : ", i[1], " ")

실행 결과

값이 가장 큰 3개의 항목:
키 : 값
S : 99
R : 32
U : 22

most_common(n) 메서드는 가장 흔한(또는 값이 큰) n개의 요소를 개수와 함께 리스트 형태로 반환합니다. 요소들은 빈도가 높은 순에서 낮은 순으로 정렬되어 출력됩니다.

방법 2: heapq.nlargest() 함수 활용

heapq 모듈의 nlargest() 함수를 사용하는 방법도 있습니다. 이 함수는 세 개의 인자를 받는데, 첫 번째는 선택할 요소의 개수, 두 번째는 딕셔너리, 세 번째는 정렬 기준이 되는 키 함수입니다.

예제 코드

# nlargest 모듈 임포트
from heapq import nlargest

# 딕셔너리 정의
my_dict = {'T': 23, 'U': 22, 'T': 21, 'O': 20, 'R': 32, 'S': 99}

# 값 기준으로 가장 큰 3개의 키 추출
ThreeHighest = nlargest(3, my_dict, key=my_dict.get)

print("값이 가장 큰 3개의 항목:")
print("키 : 값")
for val in ThreeHighest:
    print(val, " : ", my_dict.get(val))

실행 결과

값이 가장 큰 3개의 항목:
키 : 값
S : 99
R : 32
U : 22

nlargest() 함수는 지정한 개수만큼의 가장 큰 요소를 효율적으로 반환합니다. key=my_dict.get 옵션을 사용하면 딕셔너리의 값(value)을 기준으로 정렬하여 해당하는 키(key)들을 얻을 수 있습니다.

마무리

지금까지 파이썬 딕셔너리에서 가장 큰 값 3개를 찾는 두 가지 방법을 살펴보았습니다. Counter.most_common()은 간결하고 직관적이며, heapq.nlargest()는 대용량 데이터에서 성능 면에서 유리합니다. 상황에 맞게 적절한 방법을 선택하여 활용하시기 바랍니다.