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继承和抽象类的实现方法
Jan 14 Python
全面了解Nginx, WSGI, Flask之间的关系
Jan 09 Python
python opencv设置摄像头分辨率以及各个参数的方法
Apr 02 Python
python创建属于自己的单词词库 便于背单词
Jul 30 Python
Python中zip()函数的简单用法举例
Sep 02 Python
python匿名函数的使用方法解析
Oct 10 Python
python 消费 kafka 数据教程
Dec 21 Python
Pytho爬虫中Requests设置请求头Headers的方法
Sep 22 Python
利用python 下载bilibili视频
Nov 13 Python
python 爬虫爬取京东ps4售卖情况
Dec 18 Python
如何用python批量调整视频声音
Dec 22 Python
windows系统Tensorflow2.x简单安装记录(图文)
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
dedecms模板标签代码官方参考
2007/03/17 PHP
PHP加速 eAccelerator配置和使用指南
2009/06/05 PHP
PHP Zip解压 文件在线解压缩的函数代码
2010/05/26 PHP
Drupal7连接多个数据库及常见问题解决
2014/03/02 PHP
一个完整的PHP类包含的七种语法说明
2015/06/04 PHP
PHP访问数据库集群的方法小结
2016/03/14 PHP
JS中不为人知的五种声明Number的方式简要概述
2013/02/22 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
2015/07/17 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
2016/04/29 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
2016/12/18 Javascript
canvas绘制环形进度条
2017/02/23 Javascript
基于Two.js实现星球环绕动画效果的示例
2017/11/06 Javascript
JS 实现分页打印功能
2018/05/16 Javascript
Layui数据表格之获取表格中所有的数据方法
2018/08/20 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
详解vuex之store拆分即多模块状态管理(modules)篇
2018/11/13 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
2019/07/27 Javascript
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
2019/11/01 Javascript
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
python中文分词教程之前向最大正向匹配算法详解
2017/11/02 Python
python遍历文件夹找出文件夹后缀为py的文件方法
2018/10/21 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
多个python文件调用logging模块报错误
2020/02/12 Python
python argparse传入布尔参数false不生效的解决
2020/04/20 Python
如何利用Python写个坦克大战
2020/11/18 Python
Avène雅漾美国官方网站:敏感肌肤护理专家
2016/10/24 全球购物
新西兰网上购物,折扣店:BestDeals.co.nz
2019/03/20 全球购物
说出你对remoting 和webservice的理解和应用
2014/06/08 面试题
应届生服装设计自我评价
2013/09/20 职场文书
旷课检讨书1000字
2014/02/14 职场文书
供货协议书
2014/04/22 职场文书
八年级历史教学反思
2016/02/19 职场文书
2019广播稿怎么写
2019/04/17 职场文书