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())

Python利用heapq实现一个优先级队列的方法

来源: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
  • asp之家 网络编程 m.aspxhome.com