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中optparse模块使用浅析
Jan 01 Python
Python爬取三国演义的实现方法
Sep 12 Python
python中numpy基础学习及进行数组和矢量计算
Feb 12 Python
解决Python获取字典dict中不存在的值时出错问题
Oct 17 Python
Python函数中不定长参数的写法
Feb 13 Python
django配置连接数据库及原生sql语句的使用方法
Mar 03 Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 Python
python操作gitlab API过程解析
Dec 27 Python
Python装饰器原理与基本用法分析
Jan 07 Python
python3 deque 双向队列创建与使用方法分析
Mar 24 Python
动态设置django的model field的默认值操作步骤
Mar 30 Python
基于Python实现nc批量转tif格式
Aug 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
德生1994机评
2021/03/02 无线电
新浪新闻小偷
2006/10/09 PHP
基于php下载文件的详解
2013/06/02 PHP
PHP代码优化技巧小结
2015/09/29 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
基于php+MySql实现学生信息管理系统实例
2020/08/04 PHP
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
js下将字符串当函数执行的方法
2011/07/13 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
jQuery中append()方法用法实例
2015/01/08 Javascript
js实现多选项切换导航菜单的方法
2015/02/06 Javascript
详解JavaScript中void语句的使用
2015/06/04 Javascript
js 获取经纬度的实现方法
2016/06/20 Javascript
vue.js初学入门教程(2)
2016/11/07 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
2018/02/22 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
Vue插值、表达式、分隔符、指令知识小结
2018/10/12 Javascript
详解Vue2.0组件的继承与扩展
2018/11/23 Javascript
CryptoJS中AES实现前后端通用加解密技术
2018/12/18 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
Tornado高并发处理方法实例代码
2018/01/15 Python
pandas重新生成索引的方法
2018/11/06 Python
Python 获取div标签中的文字实例
2018/12/20 Python
Python Django框架实现应用添加logging日志操作示例
2019/05/17 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
英国领先的杂志订阅网站:Magazine.co.uk
2018/01/25 全球购物
介绍下Lucene建立索引的过程
2016/03/02 面试题
创新社会管理心得体会
2014/09/12 职场文书
乡镇党员干部群众路线对照检查材料思想汇报
2014/09/28 职场文书
个人学习党的群众路线教育实践活动心得体会
2014/11/05 职场文书
三年级作文之小小梦想
2019/12/06 职场文书
pandas中对文本类型数据的处理小结
2021/11/01 Python
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python