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中的defaultdict模块和namedtuple模块的简单入门指南
Apr 01 Python
Python字符串拼接、截取及替换方法总结分析
Apr 13 Python
python 字符串转列表 list 出现\ufeff的解决方法
Jun 22 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
May 25 Python
Flask模拟实现CSRF攻击的方法
Jul 24 Python
Python图像处理之gif动态图的解析与合成操作详解
Dec 30 Python
Python实现的列表排序、反转操作示例
Mar 13 Python
Django url,从一个页面调到另个页面的方法
Aug 21 Python
浅谈Python里面None True False之间的区别
Jul 09 Python
Python如何在单元测试中给对象打补丁
Aug 03 Python
python 列表推导和生成器表达式的使用
Feb 01 Python
pandas求平均数和中位数的方法实例
Aug 04 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水印
2007/03/16 PHP
php设计模式 Builder(建造者模式)
2011/06/26 PHP
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
ThinkPHP权限认证Auth实例详解
2014/07/22 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
2015/08/16 PHP
thinkphp微信开发(消息加密解密)
2015/12/02 PHP
golang与PHP输出excel示例
2016/07/22 PHP
thinkphp5框架API token身份验证功能示例
2019/05/21 PHP
PJ Blog修改-禁止复制的代码和方法
2006/10/25 Javascript
javascript应用:Iframe自适应其加载的内容高度
2007/04/10 Javascript
javascript动态添加checkbox复选框的方法
2015/12/23 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
浅谈ES6新增的数组方法和对象
2017/08/08 Javascript
详解vue mint-ui源码解析之loadmore组件
2017/10/11 Javascript
vue 动态改变静态图片以及请求网络图片的实现方法
2018/02/07 Javascript
Nodejs实现多文件夹文件同步
2018/10/17 NodeJs
使用nodejs实现JSON文件自动转Excel的工具(推荐)
2020/06/24 NodeJs
vue 动态创建组件的两种方法
2020/12/31 Vue.js
Python使用微信itchat接口实现查看自己微信的信息功能详解
2019/08/22 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
2019/09/20 Python
根据tensor的名字获取变量的值方式
2020/01/04 Python
AUC计算方法与Python实现代码
2020/02/28 Python
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
CNC数控操作工岗位职责
2013/11/19 职场文书
大学班级学风建设方案
2014/05/01 职场文书
小学英语教师先进事迹
2014/05/28 职场文书
班组拓展活动方案
2014/08/14 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
篮球赛闭幕式主持词
2015/07/03 职场文书
聘任协议书(挂靠)
2015/09/21 职场文书
安全生产标语口号
2015/12/26 职场文书
信息技术远程培训心得体会
2016/01/09 职场文书
护士医德医风心得体会
2016/01/25 职场文书
Python词云的正确实现方法实例
2021/05/08 Python