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中使用Inotify监控文件实例
Feb 14 Python
python中的闭包用法实例详解
May 05 Python
Python去除、替换字符串空格的处理方法
Apr 01 Python
对Python3中的print函数以及与python2的对比分析
May 02 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
Feb 25 Python
Python深拷贝与浅拷贝用法实例分析
May 05 Python
OpenCV 轮廓检测的实现方法
Jul 03 Python
详解python中的模块及包导入
Aug 30 Python
Pygame框架实现飞机大战
Aug 07 Python
python 制作本地应用搜索工具
Feb 27 Python
Python+Matplotlib+LaTeX玩转数学公式
Feb 24 Python
Python中npy和mat文件的保存与读取
Apr 24 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
PHP脚本的10个技巧(7)
2006/10/09 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
2013/11/28 PHP
php关键字仅替换一次的实现函数
2015/10/29 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
phpfpm的作用和用法
2019/10/10 PHP
javascript prototype,executing,context,closure
2008/12/24 Javascript
firefox下对ajax的onreadystatechange的支持情况分析
2009/12/14 Javascript
JavaScript高级程序设计 XML、Ajax 学习笔记
2011/09/10 Javascript
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
js去空格技巧分别去字符串前后、左右空格
2013/10/21 Javascript
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
jQuery mobile转换url地址及获取url中目录部分的方法
2015/12/04 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
浅谈jquery页面初始化的4种方式
2016/11/27 Javascript
vue.js指令v-model使用方法
2017/03/20 Javascript
利用n工具轻松管理Node.js的版本
2017/04/21 Javascript
JS根据json数组多个字段排序及json数组常用操作
2019/06/06 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
2019/09/29 Javascript
JavaScript代码模拟鼠标自动点击事件示例
2020/08/07 Javascript
js+css实现扇形导航效果
2020/08/18 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
深入解析Python设计模式编程中建造者模式的使用
2016/03/02 Python
python requests 测试代理ip是否生效
2018/07/25 Python
Python 日期区间处理 (本周本月上周上月...)
2019/08/08 Python
python获取网络图片方法及整理过程详解
2019/12/20 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
美国领先的礼品卡网站:GiftCards.com
2016/11/02 全球购物
职工擅自离岗检讨书
2014/09/23 职场文书
项目安全员岗位职责
2015/02/15 职场文书
房地产项目合作意向书
2015/05/08 职场文书
村主任当选感言
2015/08/01 职场文书