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中的异常处理简明介绍
Apr 13 Python
python实现报表自动化详解
Nov 16 Python
详解tensorflow实现迁移学习实例
Feb 10 Python
Python中list查询及所需时间计算操作示例
Jun 21 Python
Python 给某个文件名添加时间戳的方法
Oct 16 Python
python实现从pdf文件中提取文本,并自动翻译的方法
Nov 28 Python
在python里面运用多继承方法详解
Jul 01 Python
通过Python编写一个简单登录功能过程解析
Sep 04 Python
django 简单实现登录验证给你
Nov 06 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
Feb 09 Python
python requests.get带header
May 05 Python
python实现图像外边界跟踪操作
Jul 13 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
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
php准确计算复活节日期的方法
2015/04/18 PHP
PHP中抽象类、接口的区别与选择分析
2016/03/29 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
PHP设计模式之命令模式示例详解
2020/12/20 PHP
Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
2007/02/09 Javascript
在你的网页中嵌入外部网页的方法
2007/04/02 Javascript
JavaScript面向对象编程
2008/03/02 Javascript
使用Math.floor与Math.random取随机整数的方法详解
2013/05/07 Javascript
JavaScript中string转换成number介绍
2014/12/31 Javascript
[Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能实例代码
2016/12/20 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
JS数组求和的常用方法实例小结
2019/01/07 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
利用Hyperic调用Python实现进程守护
2018/01/02 Python
python统计多维数组的行数和列数实例
2018/06/23 Python
python实现静态服务器
2019/09/05 Python
pytorch多GPU并行运算的实现
2019/09/27 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
世界上最大的汽车共享网站:Zipcar
2017/01/14 全球购物
广州地球村科技数据库题目
2016/04/25 面试题
中国央视网签名寄语
2014/01/18 职场文书
运动会跳远加油稿
2014/02/20 职场文书
初中班主任寄语
2014/04/04 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
迎新生标语大全
2014/10/06 职场文书
2014年公司工作总结
2014/11/22 职场文书
停水通知
2015/04/16 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
青春雷锋观后感
2015/06/10 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书
2015年财务人员个人工作总结
2015/07/27 职场文书
mybatis 获取更新记录的id
2022/05/20 Java/Android
使用python生成大量数据写入es数据库并查询操作(2)
2022/09/23 Python