Python利用heapq实现一个优先级队列的方法
- 更新时间:2022-10-26 08:36:53
- 编辑:江文轩
实现一个优先级队列,每次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中根据字符串调用函数的实现方法
字符串作为python中常用的数据类型,掌握字符串的常用方法十分必要。下面这篇文章主要给大家介绍了关于Python中通过字符串调用函数或方法的相关资料,需要的朋友可以参考借鉴,下面来一起
发布时间:2020-02-29
-
Python爬取数据并写入MySQL数据库操作示例
今天小编就为大家分享一篇Python爬取数据并写入MySQL数据库的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
发布时间:2020-03-17
-
python输出打印在一行的方法
在Python中print默认输出是换行的,如果要实现不换行需要在变量末尾加上逗号 。如要使输出的数据打印在一行要在print输出的变量后加逗号。
发布时间:2020-02-07
-
解析Python3之对象垃圾收集机制
在Python中,它在每个对象中保持了一个计数器,用于记录指向该对象的的引用的个数。这篇文章主要介绍了Python3中的对象垃圾收集机制,需要的朋友可以参考下
发布时间:2020-02-17
-
分享Python中字典创建,遍历,添加等实用基础操作技巧合集
字段是Python是字典中唯一的键-值类型,本文讲述了Python中字典如何创建 遍历 添加等实用基础操作技巧,内容非常基础但非常重要,一定要熟练掌握
发布时间:2020-02-19
-
深入理解Python3.6连接Oracle数据库
这篇文章主要介绍了Python3.6连接Oracle数据库的方法,较为详细的分析了cx_Oracle模块安装及Python3.6使用cx_Oracle模块操作Oracle数据库的具体操作步骤与相关注意事项,需要的朋友可以参考下
发布时间:2020-02-21
-
python中pass的实例用法
在本篇内容里我们给读者们分享了关于python中pass的作用以及相关实例代码,有需要的朋友们学习下。
发布时间:2020-03-30
-
Python读取xlsx数据生成图标代码实例
这篇文章主要介绍了Python读取xlsx数据生成图标代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
发布时间:2021-05-09