Python利用heapq实现一个优先级队列的方法
作者:LazyCat_CiCi 时间:2021-08-05 06:28:48
实现一个优先级队列,每次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())
来源:https://blog.csdn.net/Jmiew123/article/details/68951054
标签:Python,heapq,优先,队列
0
投稿
猜你喜欢
python和websocket构建实时日志跟踪器的步骤
2023-08-11 08:28:20
JS 中如何判断 null
2007-12-13 20:28:00
如何做好一份前端工程师的简历?
2009-02-17 12:52:00
详解Python中的静态方法与类成员方法
2022-08-02 23:30:16
python pyaudio音频录制的实现
2022-03-13 08:44:31
浅谈MySQL中四种常用存储引擎
2024-01-23 00:10:29
ASP.NET中MVC从后台控制器传递数据到前台视图的方式
2023-06-29 07:09:39
[Oracle] 浅谈Lock与Latch
2024-01-15 18:02:37
基于Pygame实现简单的贪吃蛇游戏
2022-05-14 17:43:10
python实现简易连点器
2021-11-18 16:05:39
Python实现比较两个列表(list)范围
2022-07-20 18:08:04
Javascript调试之console对象——你不知道的一些小技巧
2023-08-07 19:24:14
Python 多线程爬取案例
2022-11-17 16:02:06
python 字典(dict)遍历的四种方法性能测试报告
2023-08-21 21:27:08
总结python 三种常见的内存泄漏场景
2023-02-18 16:37:49
jQuery 取得 background-position 的值
2009-04-05 16:02:00
五种Python转义表示法
2021-12-22 03:24:01
javascript 数组(list)添加/删除的实现
2024-04-17 10:37:25
webpack css加载和图片加载的方法示例
2024-04-22 13:02:13
Vue3 计算属性的用法详解
2024-04-28 09:20:33