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实现二叉搜索树
Feb 03 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
Aug 31 Python
浅谈django的render函数的参数问题
Oct 16 Python
Python内置random模块生成随机数的方法
May 31 Python
Python 中Django验证码功能的实现代码
Jun 20 Python
python的一些加密方法及python 加密模块
Jul 11 Python
python打开使用的方法
Sep 30 Python
python实现的Iou与Giou代码
Jan 18 Python
深入理解Python 多线程
Jun 16 Python
新手常见Python错误及异常解决处理方案
Jun 18 Python
pytorch finetuning 自己的图片进行训练操作
Jun 05 Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
Apr 14 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
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
ThinkPHP关联模型操作实例分析
2012/09/23 PHP
JSON 编辑器实现代码
2009/12/06 Javascript
关于jQuery新的事件绑定机制on()的使用技巧
2013/04/26 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
JavaScript中的方法重载实例
2015/03/16 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
JS 全屏和退出全屏详解及实例代码
2016/11/07 Javascript
angular 基于ng-messages的表单验证实例
2017/05/04 Javascript
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
Vue.JS项目中5个经典Vuex插件
2017/11/28 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2017/12/01 Javascript
antd组件Upload实现自己上传的实现示例
2018/12/18 Javascript
深入理解nodejs搭建静态服务器(实现命令行)
2019/02/05 NodeJs
layui的表单提交以及验证和修改弹框的实例
2019/09/09 Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
2019/10/23 Javascript
python实现ipsec开权限实例
2014/11/11 Python
python在控制台输出进度条的方法
2015/06/20 Python
python安装cx_Oracle模块常见问题与解决方法
2017/02/21 Python
python机器学习理论与实战(六)支持向量机
2018/01/19 Python
PyQt5每天必学之单行文本框
2018/04/19 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
python3使用腾讯企业邮箱发送邮件的实例
2019/06/28 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
音频处理 windows10下python三方库librosa安装教程
2020/06/20 Python
python3中数组逆序输出方法
2020/12/01 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
如何避免常见的6种HTML5错误用法
2017/11/06 HTML / CSS
几个数据库方面的面试题
2016/07/01 面试题
专升本个人自我评价
2013/12/22 职场文书
会计专业个人自我鉴定
2014/03/21 职场文书
环保倡议书
2014/04/14 职场文书
检讨书范文300字
2015/01/28 职场文书
2015年库房工作总结
2015/04/30 职场文书
钓鱼岛事件感想
2015/08/11 职场文书
《棉鞋里的阳光》教学反思
2016/02/20 职场文书