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友情链接检查方法
Jul 08 Python
Python实现周期性抓取网页内容的方法
Nov 04 Python
详解Django rest_framework实现RESTful API
May 24 Python
python 3.6.5 安装配置方法图文教程
Sep 18 Python
使用pandas把某一列的字符值转换为数字的实例
Jan 29 Python
python使用requests模块实现爬取电影天堂最新电影信息
Apr 03 Python
Python安装Flask环境及简单应用示例
May 03 Python
ipython jupyter notebook中显示图像和数学公式实例
Apr 15 Python
vscode+PyQt5安装详解步骤
Aug 12 Python
python中pyqtgraph知识点总结
Jan 26 Python
python实战之一步一步教你绘制小猪佩奇
Apr 22 Python
Python 匹配文本并在其上一行追加文本
May 11 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
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
新闻分类录入、显示系统
2006/10/09 PHP
PHP持久连接mysql_pconnect()函数使用介绍
2012/02/05 PHP
curl实现站外采集的方法和技巧
2014/01/31 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
2015/11/10 PHP
Prototype使用指南之range.js
2007/01/10 Javascript
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
2012/02/03 Javascript
jQuery图片轮播的具体实现
2013/09/11 Javascript
JS原型、原型链深入理解
2016/02/27 Javascript
炫酷的js手风琴效果
2016/10/13 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
你可能不知道的前端算法之文字避让(inMap)
2018/01/12 Javascript
微信小程序仿美团城市选择
2018/06/06 Javascript
原生JS检测CSS3动画是否结束的方法详解
2019/01/27 Javascript
详解Vue源码中一些util函数
2019/04/24 Javascript
React 父子组件通信的实现方法
2019/12/05 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
2020/04/14 Javascript
用云开发Cloudbase实现小程序多图片内容安全监测的代码详解
2020/06/07 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
[02:06]2018完美世界全国高校联赛秋季赛开始报名(附彩蛋)
2018/09/03 DOTA
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
Python字符串和文件操作常用函数分析
2015/04/08 Python
让python在hadoop上跑起来
2016/01/27 Python
Python三种遍历文件目录的方法实例代码
2018/01/19 Python
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
Pandas分组与排序的实现
2019/07/23 Python
如何在django中运行scrapy框架
2020/04/22 Python
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
后勤自我鉴定
2013/10/13 职场文书
护士自我评价范文
2014/01/25 职场文书
党员身份证明材料
2015/06/19 职场文书
党员干部学习心得体会
2016/01/23 职场文书