实现一个优先级队列,每次流行的元素要是优先级高的元素,由于heapq.heapify(列表)默认构建一个小顶堆,因此要将优先级变为相反数再推,代码如下:
进口heapq PriorityQueue类(对象): ”““实现一个优先级队列,每次流行优先级最高的元素”“ def __init__(自我): 自我。_queue=[] 自我。_index=0 def推(自我、项目、优先级): heapq.heappush (self._queue(优先级、self._index、项目))#将优先级和索引结合使用,在优先级相同的时候比较指数,流行先进入队列的元素 自我。_index +=1 def流行(自我): 返回heapq.heappop (self._queue) [1] if __name__==癬_main__”: PriorityQueue pqueue=() 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 ())
以上这篇Python利用heapq实现一个优先级队列的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。