[Python] 사전에서 값을 기준으로 topK를 추출하는 방법

2021. 4. 28. 02:17 Python/Python 프로그래밍

Python 사전(Dictionary)에서 값을 기준으로 topK를 추출하는 방법

python에서 dictionary를 갖고 있을때 (key, value)에서 value를 기반으로 topK를 뽑아내는 방법을 제시한다.
사전에서 값을 기준으로 정렬을 한 뒤에, [:N]을 이용해서 값을 추출할 수 있지만,
간단하게 한줄로 끝낼 수 있다. 기존 파이썬 패키지에 있는 heapq를 이용하면 된다.

heapq는 Heap queue algorithm으로 priority queue 알고리즘을 이용해서 값을 찾아낸다.
heaps은 binary tree를 이용하기 때문에 O(nlogn)

더 자세한 내용을 및 이론을 알고 싶으면

https://docs.python.org/2/library/heapq.html에서 8.4.3 Theory를 확인하면 좋다.

 

소스코드

import heapq

topK = 10
item_score_dict = {'1': 3,'2':2,'3':5,'4':1, '8':3}
ranklist = heapq.nlargest(topK, item_score_dict, key=item_score_dict.get)

 

출처 : ourcstory.tistory.com/469?category=630693