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搭建FTP服务器的方法示例
Jan 19 Python
详解Python之unittest单元测试代码
Jan 24 Python
使用Python编写Prometheus监控的方法
Oct 15 Python
python实现维吉尼亚加密法
Mar 20 Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
Aug 09 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
Aug 24 Python
浅谈Python type的使用
Nov 19 Python
Python网络爬虫四大选择器用法原理总结
Jun 01 Python
python绘制分布折线图的示例
Sep 24 Python
pytorch 移动端部署之helloworld的使用
Oct 30 Python
python异步的ASGI与Fast Api实现
Jul 16 Python
Python 数据可视化神器Pyecharts绘制图像练习
Feb 28 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
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
在PHP站点的页面上添加Facebook评论插件的实例教程
2016/01/08 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
使用window.prompt()实现弹出用户输入的对话框
2015/04/13 Javascript
javascript实现获取字符串hash值
2015/05/10 Javascript
浅谈javascript事件取消和阻止冒泡
2015/05/26 Javascript
AngularJS基础 ng-switch 指令简单示例
2016/08/03 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
JavaScript switch语句使用方法简介
2019/12/30 Javascript
jquery实现垂直手风琴导航栏
2020/02/18 jQuery
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
js实现复制粘贴的两种方法
2020/12/04 Javascript
[00:32]2018DOTA2亚洲邀请赛Secret出场
2018/04/03 DOTA
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
python执行等待程序直到第二天零点的方法
2015/04/23 Python
详解Python中的各种函数的使用
2015/05/24 Python
使用Python读取安卓手机的屏幕分辨率方法
2018/03/31 Python
使用11行Python代码盗取了室友的U盘内容
2018/10/23 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
2019/07/01 Python
Python偏函数实现原理及应用
2020/11/20 Python
CSS3打造百度贴吧的3D翻牌效果示例
2017/01/04 HTML / CSS
html5手机键盘弹出收起的处理
2020/01/20 HTML / CSS
Cotton On美国网站:澳洲时装连锁品牌
2016/10/25 全球购物
美国家庭鞋店:Shoe Sensation
2019/09/27 全球购物
施工资料员岗位职责
2014/01/06 职场文书
《水乡歌》教学反思
2014/04/24 职场文书
大学专科自荐信
2014/06/17 职场文书
八年级英语教学计划
2015/01/23 职场文书
主题班会开场白
2015/06/01 职场文书
2016校本研修培训心得体会
2016/01/08 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
HTML页面中使两个div并排显示的实现
2022/05/15 HTML / CSS