Это то, что я обычно представляю в качестве побочной заметки в некоторых из моих лекций:
class PriorityQueue(object):
def __init__(self, key=lambda x: x):
self.l = []
self.key = key
def __len__(self):
return len(self.l)
def push(self, obj):
heapq.heappush(self.l, (self.key(obj), obj))
def pop(self):
return heapq.heappop(self.l)[-1]
Требования ОП, по-видимому, должны использовать operator.itemgetter('priority')
в качестве аргумента key
при создании экземпляра PriorityQueue
(конечно, требуется import operator
в верхней части модуля; -).