본문 바로가기
IT/Python

heapq모듈에 있는 nlargeest(), nsmallest() 함수

by Jang HyunWoong 2014. 12. 19.

heapq 모듈에 있는 nlargest()와 nsmallest() 함수를 사용해서 최대 or 최소값을 찾을 수 있다. 

 

기본적인 함수 형태

heapq.nlargest(niterablekey=None) 

heapq.nsmallest(niterablekey=None) 

 

사용

 

>>> import heapq

>>> nums = [1, 3, 6, 34, 5, 22, 67, -3, 56, -9]

>>> print(heapq.nlargest(5, nums))

[67, 56, 34, 22, 6]

>>> print(heapq.nsmallest(3, nums))

[-9, -3, 1]

 

key 파라미터를 사용해 보겠다. 

 

>>> data = [

{'title': 'Sams', 'famous': 100, 'price':230.0},

{'title': 'LZ', 'famous': 81, 'price':120.56},

{'title': 'Hyun', 'famous': 90, 'price':225.78},

{'title': 'Ki', 'famous': 50, 'price':130.53},

{'title': 'Dea', 'famous': 30, 'price':80.99}

]

>>> cheapest = heapq.nsmallest(3, data, key=lambda t: t['price'])

>>> print(cheapest)

[{'famous': 30, 'price': 80.99, 'title': 'Dea'}, {'famous': 81, 'price': 120.56, 'title': 'LZ'}, {'famous': 50, 'price': 130.53, 'title': 'Ki'}] 

 

람다를 사용해서 키값을 설정했다. 

 

가장 작은 키값부터 차례로 나열된다. 

반응형