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

Python으로 딕셔너리에서 가장 큰 값 3개 찾는 방법

이 글에서는 주어진 문제를 해결하기 위한 솔루션과 접근 방식을 단계별로 살펴보겠습니다.

문제 정의

딕셔너리가 하나 주어졌을 때, 저장된 값 중에서 가장 큰 값 3개를 찾아 이에 해당하는 키와 함께 화면에 출력하는 것이 목표입니다.

방법 1 – collections 모듈 활용 (Counter 함수)

collections 모듈의 Counter 클래스를 사용하면 most_common() 메서드를 통해 값이 큰 순서대로 요소를 손쉽게 추출할 수 있습니다. most_common(n)은 값이 큰 항목부터 순서대로 n개의 (키, 값) 쌍을 리스트 형태로 반환합니다.

예제 코드

from collections import Counter

# 초기 딕셔너리
my_dict = {'t': 3, 'u': 4, 't': 6, 'o': 5, 'r': 21}
k = Counter(my_dict)

# 가장 큰 값 3개 찾기
high = k.most_common(3)

print("가장 큰 값 3개를 가진 딕셔너리:")
print("키 : 값")
for i in high:
    print(i[0], " :", i[1])

실행 결과

가장 큰 값 3개를 가진 딕셔너리:
키 : 값
r : 21
t : 6
o : 5

참고로 위 예제에서 키 't'가 중복되어 선언되었는데, 파이썬 딕셔너리는 동일한 키에 대해 마지막에 할당된 값만 유지하므로 실제로는 't': 6이 저장됩니다.

방법 2 – heapq 모듈 활용 (nlargest 함수)

heapq 모듈의 nlargest() 함수를 사용하면 더욱 간결하게 상위 n개의 항목을 구할 수 있습니다. key 매개변수에 my_dict.get을 지정하면 딕셔너리의 을 기준으로 비교하여, 가장 큰 값에 해당하는 키들을 우선순위 순으로 반환합니다.

예제 코드

import heapq

# 초기 딕셔너리
my_dict = {'t': 3, 'u': 4, 't': 6, 'o': 5, 'r': 21}

# 가장 큰 값 3개 찾기
high = heapq.nlargest(3, my_dict, key=my_dict.get)

print("가장 큰 값 3개를 가진 딕셔너리:")
print("키 : 값")
for i in high:
    print(i, " :", my_dict[i])

실행 결과

가장 큰 값 3개를 가진 딕셔너리:
키 : 값
r : 21
t : 6
o : 5

결론

이 글에서는 파이썬에서 딕셔너리에 저장된 값들 중 가장 큰 값 3개를 찾는 두 가지 방법을 살펴보았습니다. collections 모듈의 Counter와 heapq 모듈의 nlargest 함수를 활용하면 별도의 정렬 로직을 직접 구현하지 않고도 간단하고 효율적으로 원하는 결과를 얻을 수 있습니다. 특히 nlargest는 내부적으로 힙(Heap) 자료구조를 사용하므로 전체 정렬보다 성능 면에서 유리하며, 대량의 데이터를 다룰 때 특히 효과적입니다. 데이터 분석이나 통계 처리 작업에서 자주 활용되는 패턴이니 잘 익혀두시길 권장합니다.