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

  • 更新时间:2022-10-26 08:36:53
  • 编辑:江文轩

实现一个优先级队列,每次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实现一个优先级队列的方法

以上这篇Python利用heapq实现一个优先级队列的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。

相关教程

  • Python中根据字符串调用函数的实现方法

    字符串作为python中常用的数据类型,掌握字符串的常用方法十分必要。下面这篇文章主要给大家介绍了关于Python中通过字符串调用函数或方法的相关资料,需要的朋友可以参考借鉴,下面来一起

    发布时间:2020-02-29

  • Python爬取数据并写入MySQL数据库操作示例

    今天小编就为大家分享一篇Python爬取数据并写入MySQL数据库的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    发布时间:2020-03-17

  • python输出打印在一行的方法

    在Python中print默认输出是换行的,如果要实现不换行需要在变量末尾加上逗号 。如要使输出的数据打印在一行要在print输出的变量后加逗号。

    发布时间:2020-02-07

  • 解析Python3之对象垃圾收集机制

    在Python中,它在每个对象中保持了一个计数器,用于记录指向该对象的的引用的个数。这篇文章主要介绍了Python3中的对象垃圾收集机制,需要的朋友可以参考下

    发布时间:2020-02-17

  • 分享Python中字典创建,遍历,添加等实用基础操作技巧合集

    字段是Python是字典中唯一的键-值类型,本文讲述了Python中字典如何创建 遍历 添加等实用基础操作技巧,内容非常基础但非常重要,一定要熟练掌握

    发布时间:2020-02-19

  • 深入理解Python3.6连接Oracle数据库

    这篇文章主要介绍了Python3.6连接Oracle数据库的方法,较为详细的分析了cx_Oracle模块安装及Python3.6使用cx_Oracle模块操作Oracle数据库的具体操作步骤与相关注意事项,需要的朋友可以参考下

    发布时间:2020-02-21

  • python中pass的实例用法

    在本篇内容里我们给读者们分享了关于python中pass的作用以及相关实例代码,有需要的朋友们学习下。

    发布时间:2020-03-30

  • Python读取xlsx数据生成图标代码实例

    这篇文章主要介绍了Python读取xlsx数据生成图标代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    发布时间:2021-05-09

用户留言