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 相关文章推荐
使用url_helper简化Python中Django框架的url配置教程
May 30 Python
Python如何实现文本转语音
Aug 08 Python
python之文件的读写和文件目录以及文件夹的操作实现代码
Aug 28 Python
win10环境下python3.5安装步骤图文教程
Feb 03 Python
Python运算符重载详解及实例代码
Mar 07 Python
神经网络(BP)算法Python实现及应用
Apr 16 Python
python连接mongodb密码认证实例
Oct 16 Python
python 读取鼠标点击坐标的实例
Dec 29 Python
关于Tensorflow 模型持久化详解
Feb 12 Python
基于python实现音乐播放器代码实例
Jul 01 Python
在python3.9下如何安装scrapy的方法
Feb 03 Python
对Pytorch 中的contiguous理解说明
Mar 03 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中使用Select 查询语句的实例
2014/02/19 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
基于JQuery的一句代码实现表格的简单筛选
2010/07/26 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
nodejs加密Crypto的实例代码
2016/07/07 NodeJs
类似于QQ的右滑删除效果的实现方法
2016/10/16 Javascript
微信小程序 支付功能开发错误总结
2017/02/21 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
2018/02/23 Javascript
彻底弄懂 JavaScript 执行机制
2018/10/23 Javascript
vue中npm包全局安装和局部安装过程
2019/09/03 Javascript
vue实现图片懒加载的方法分析
2020/02/05 Javascript
Python fileinput模块使用实例
2015/06/03 Python
python3中int(整型)的使用教程
2017/03/23 Python
python根据url地址下载小文件的实例
2018/12/18 Python
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
Python imageio读取视频并进行编解码详解
2019/12/10 Python
Python 列表反转显示的四种方法
2020/11/16 Python
Stella McCartney官网:成衣、包袋、香水、内衣、童装及Adidas系列
2018/12/20 全球购物
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
雅虎笔试题(字符串操作)
2015/03/24 面试题
软件测试工程师面试问题精选
2016/10/28 面试题
高中生毕业自我鉴定
2013/10/10 职场文书
幼儿园教师奖惩制度
2014/02/01 职场文书
挂靠协议书范本
2014/04/22 职场文书
优秀毕业生就业推荐信
2014/05/22 职场文书
爱护花草树木的标语
2014/06/11 职场文书
房屋租赁协议书(标准版)
2014/10/02 职场文书
2015年爱牙日活动总结
2015/03/23 职场文书
银行客户经理岗位职责
2015/04/09 职场文书
2015年安全员工作总结范文
2015/04/22 职场文书
焦裕禄纪念馆观后感
2015/06/09 职场文书
iPhone13将有八大升级
2021/04/15 数码科技
oracle表分区的概念及操作
2021/04/24 Oracle
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android