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 爬虫的工具列表大全
Jan 31 Python
python+mongodb数据抓取详细介绍
Oct 25 Python
Python将DataFrame的某一列作为index的方法
Apr 08 Python
python实现图书馆研习室自动预约功能
Apr 27 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
May 30 Python
Django url,从一个页面调到另个页面的方法
Aug 21 Python
Python基于数列实现购物车程序过程详解
Jun 09 Python
python给视频添加背景音乐并改变音量的具体方法
Jul 19 Python
python实现录制全屏和选择区域录屏功能
Feb 05 Python
你喜欢篮球吗?Python实现篮球游戏
Jun 11 Python
python文件与路径操作神器 pathlib
Apr 01 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会话(Session)实现用户登陆功能
2013/06/29 PHP
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
FileUpload上传图片(图片不变形)
2010/08/05 Javascript
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
ExtJs使用总结(非常详细)
2012/03/22 Javascript
jquery异步跨域访问代码
2013/06/28 Javascript
js使用心得分享
2015/01/13 Javascript
JS实现超炫网页烟花动画效果的方法
2015/03/02 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
2016/01/24 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
2017/08/25 Javascript
基于Vue实现图书管理功能
2017/10/17 Javascript
vue实现拖拽的简单案例 不超出可视区域
2019/07/25 Javascript
Vue中使用matomo进行访问流量统计的实现
2019/11/05 Javascript
微信小程序wxs实现吸顶效果
2020/01/08 Javascript
jQuery实现手风琴效果(蒙版)
2020/01/11 jQuery
JS 创建对象的模式实例小结
2020/04/28 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
浅析Python中signal包的使用
2015/11/13 Python
Python3处理HTTP请求的实例
2018/05/10 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
windows10下安装TensorFlow Object Detection API的步骤
2019/06/13 Python
python 基于TCP协议的套接字编程详解
2019/06/29 Python
波兰最大的度假胜地和城市公寓租赁运营商:Sun & Snow
2018/10/18 全球购物
英国电信商店:BT Shop
2019/12/17 全球购物
俄罗斯在线购买飞机票、火车票、巴士票网站:Tutu.ru
2020/03/16 全球购物
大学生求职推荐信
2013/11/27 职场文书
面试自我评价范文
2014/09/17 职场文书
党支部先进事迹材料
2014/12/24 职场文书
董事长新年致辞
2015/07/29 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
导游词之西安骊山
2019/12/20 职场文书
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python