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


Posted in Python onFebruary 03, 2019

实现一个优先级队列,每次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创建线程示例
May 06 Python
Python3实现连接SQLite数据库的方法
Aug 23 Python
使用70行Python代码实现一个递归下降解析器的教程
Apr 17 Python
Python抓取淘宝下拉框关键词的方法
Jul 08 Python
pandas DataFrame实现几列数据合并成为新的一列方法
Jun 08 Python
Python函数的参数常见分类与用法实例详解
Mar 30 Python
python字典嵌套字典的情况下找到某个key的value详解
Jul 10 Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
Sep 05 Python
PYQT5 vscode联合操作qtdesigner的方法
Mar 24 Python
详解Python设计模式之策略模式
Jun 15 Python
利用Python实现学生信息管理系统的完整实例
Dec 30 Python
python中四舍五入的正确打开方式
Jan 18 Python
对Python3中dict.keys()转换成list类型的方法详解
Feb 03 #Python
对python中字典keys,values,items的使用详解
Feb 03 #Python
python生成带有表格的图片实例
Feb 03 #Python
对python生成业务报表的实例详解
Feb 03 #Python
使用Python快速制作可视化报表的方法
Feb 03 #Python
python生成每日报表数据(Excel)并邮件发送的实例
Feb 03 #Python
Python告诉你木马程序的键盘记录原理
Feb 02 #Python
You might like
phpstorm编辑器乱码问题解决
2014/12/01 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
ajax不执行success回调而是执行了error回调
2012/12/10 Javascript
jquery 插件开发 extjs中的extend用法小结
2013/01/04 Javascript
jQuery图片滚动图片的效果(另类实现)
2013/06/02 Javascript
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
js添加select下默认的option的value和text的方法
2014/10/19 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
JS实现为排序好的字符串找出重复行的方法
2016/03/02 Javascript
javaScript数组迭代方法详解
2016/04/14 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
2016/05/25 Javascript
JS组件Bootstrap Select2使用方法解析
2016/05/30 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
layUI实现列表查询功能
2019/07/27 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
2020/07/21 Javascript
Openlayers学习之加载鹰眼控件
2020/09/28 Javascript
vue 实现element-ui中的加载中状态
2020/11/11 Javascript
JavaScript实现移动小精灵的案例代码
2020/12/12 Javascript
python模拟登录百度代码分享(获取百度贴吧等级)
2013/12/27 Python
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
python 中random模块的常用方法总结
2017/07/08 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
2018/06/13 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
Python中格式化字符串的四种实现
2020/05/26 Python
医院办公室主任职责
2013/12/29 职场文书
森林防火标语
2014/06/23 职场文书
公务员中国梦演讲稿
2014/08/19 职场文书
八一建军节营销活动方案
2014/08/31 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
档案接收函格式
2015/01/30 职场文书
布达拉宫的导游词
2015/02/02 职场文书
毕业证明书
2015/06/19 职场文书
安全温馨提示语大全
2015/07/14 职场文书
Java实现字符串转为驼峰格式的方法详解
2022/07/07 Java/Android