코드 11-6은 최소 우선순위 큐를 구현한 것입니다. 두 가지만 살펴보겠습니다. 먼저 push() 메서드를 보면 키와 데이터를 튜플로 묶어 전달하는 것을 알 수 있습니다. 내부적으로는 튜플의 첫 번째 요소인 키를 기준으로 정렬합니다. 두 번째로 파이썬의 힙은 배열을 0번부터 시작하는군요.
이제 테스트 코드를 작성하고 잘 동작하는지 살펴봅시다.
코드 11-7
if __name__ == "__main__":
pq = MinPriorityQueue()
pq.push(Element(2, "kim"))
pq.push(Element(14, "park"))
pq.push(Element(9, "choi"))
pq.push(Element(11, "lee"))
pq.push(Element(6, "yang"))
pq.push(Element(8, "jang"))
while not pq.is_empty():
elem = pq.pop()
print(f"key[{elem[0]}] : data[{elem[1]}]")