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实现多行注释的另类方法
Aug 22 Python
python生成随机mac地址的方法
Mar 16 Python
python获取指定路径下所有指定后缀文件的方法
May 26 Python
python 识别图片中的文字信息方法
May 10 Python
对python中词典的values值的修改或新增KEY详解
Jan 20 Python
python flask搭建web应用教程
Nov 19 Python
matplotlib绘制多个子图(subplot)的方法
Dec 03 Python
利用Python脚本批量生成SQL语句
Mar 04 Python
解决python父线程关闭后子线程不关闭问题
Apr 25 Python
python代码中怎么换行
Jun 17 Python
Python venv虚拟环境配置过程解析
Jul 08 Python
python多线程semaphore实现线程数控制的示例
Aug 10 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漏洞之跨网站请求伪造与防止伪造方法
2013/08/15 PHP
ThinkPHP使用UTFWry地址库进行IP定位实例
2014/04/01 PHP
PHP之autoload运行机制实例分析
2014/08/28 PHP
PHP 并发场景的几种解决方案
2019/06/14 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
javascript 设置文本框中焦点的位置
2009/11/20 Javascript
JavaScript将页面表格导出为Excel的具体实现
2013/12/27 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
js实现通用的微信分享组件示例
2014/03/10 Javascript
整理Javascript数组学习笔记
2015/11/29 Javascript
js插件Jcrop自定义截取图片功能
2016/10/14 Javascript
Angular2学习笔记——详解NgModule模块
2016/12/02 Javascript
JavaScript正则替换HTML标签功能示例
2017/03/02 Javascript
vue脚手架vue-cli的学习使用教程
2017/06/06 Javascript
js实现前面自动补全位数的方法
2018/10/10 Javascript
Vuex中的State使用介绍
2019/01/19 Javascript
使用vscode快速建立vue模板过程详解
2019/10/10 Javascript
jQuery实现点击滚动到指定元素上的方法分析
2020/03/19 jQuery
解决vue做详情页跳转的时候使用created方法 数据不会更新问题
2020/07/24 Javascript
[04:04]显微镜下的DOTA2第六期——电影级别的华丽团战
2014/06/20 DOTA
Django admin model 汉化显示文字的实现方法
2019/08/12 Python
python实现将一维列表转换为多维列表(numpy+reshape)
2019/11/29 Python
Python 一行代码能实现丧心病狂的功能
2020/01/18 Python
Python日志器使用方法及原理解析
2020/09/27 Python
python sleep和wait对比总结
2021/02/03 Python
巴西最大的珠宝连锁店:Vivara
2019/04/18 全球购物
华为c/c++笔试题
2016/01/25 面试题
如何用SQL语句进行模糊查找
2015/09/25 面试题
自荐书范文范例
2014/02/13 职场文书
小学班干部竞选演讲稿
2014/04/24 职场文书
中学生学雷锋演讲稿
2014/04/26 职场文书
初中同学会活动方案
2014/08/22 职场文书
2015年远程教育工作总结
2015/05/20 职场文书
蓝天保卫战收官在即 :15行业将开展环保分级评价
2019/07/19 职场文书
解决Mysql多行子查询的使用及空值问题
2022/01/22 MySQL