Python利用heapq实现一个优先级队列的方法
实现一个优先级队列,每次pop的元素要是优先级高的元素,由于heapq.heapify(list)默认构建一个小顶堆,因此要将priority变为相反数再push,代码如下:
import heapq class PriorityQueue(object): """实现一个优先级队列,每次pop优先级最高的元素""" def __init__(self): self._queue = [] self._index = 0 def push(self,item,priority): heapq.heappush(self._queue,(-priority,self._index,item))#将priority和index结合使用,在priority相同的时候比较index,pop先进入队列的元素 self._index += 1 def pop(self): return heapq.heappop(self._queue)[-1] if __name__ == '__main__': pqueue = PriorityQueue() pqueue.push('d',4) pqueue.push('f',3) pqueue.push('a',6) pqueue.push('s',2) print(pqueue.pop()) print(pqueue.pop()) print(pqueue.pop())
相关推荐
tulensa 2020-07-19
junzi 2020-06-11
RememberMePlease 2020-06-03
shengge0 2020-06-01
kjh00abc 2020-05-31
sdaq 2020-05-30
gaitiangai 2020-05-26
tianzyc 2020-05-18
zhangjunguo00 2020-04-23
huacuilaifa 2020-04-26
happinessaflower 2020-04-26
coulder 2020-04-21
wannagonna 2020-04-16
wishchinYang 2020-04-08
teresalxm 2020-02-18