2013-02-27 6 views
9

먼저 우선 순위 값이 가장 높은 항목을 가져 오는 우선 순위 대기열이 필요합니다. 현재 Queue 라이브러리의 PriorityQueue 클래스를 사용하고 있습니다. 그러나이 함수는 가장 낮은 값의 항목 만 반환합니다. 우선 (sys.maxint - priority)와 같은 추악한 솔루션을 우선 순위로 사용해 보았지만보다 우아한 솔루션이 있는지 궁금해했습니다.우선 순위가 높은 우선 순위 큐 (파이썬에서 우선)

답변

15

대신 음수 우선 순위를 사용하십시오. sys.maxint에서 뺄 필요가 없습니다.

queue.put((-priority, item)) 

우선 순위가 -5 인 항목보다 우선 순위가 -10 인 항목이 반환됩니다.

+0

이 기능이 작동하는 동안 정직하게 다른 모든 관련 논리가 머리에 뒤집혀 있음을 의미하기 때문에 정직하게 저를 귀찮게합니다. – blueman

+1

@blueman : 큐 클래스를 서브 클래스 화하고 우선 순위를 뒤집을 메소드를 재정의하십시오. –