ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# Python 优先级队列示例 > 原文: [https://howtodoinjava.com/python/priority-queue/](https://howtodoinjava.com/python/priority-queue/) ## 1.什么是优先队列 * [优先级队列](https://en.wikipedia.org/wiki/Priority_queue)是一种抽象数据类型,类似于常规队列或栈数据结构,但每个元素还具有与之关联的“优先级”。 * 在优先级队列中,优先级高的元素先于优先级低的元素提供。 * 如果两个元素具有相同的优先级,则将根据它们在队列中的顺序为其提供服务。 ## 2\. Python 中的优先级队列实现 以下 python 程序使用`heapq`模块来实现一个简单的优先级队列: ```py import heapq class PriorityQueue: def __init__(self): self._queue = [] self._index = 0 def push(self, item, priority): heapq.heappush(self._queue, (-priority, self._index, item)) self._index += 1 def pop(self): return heapq.heappop(self._queue)[-1] ``` ## 3\. Python 优先级队列示例 让我们看一个如何使用上面创建的优先级队列的示例。 ```py class Item: def __init__(self, name): self.name = name def __repr__(self): return 'Item({!r})'.format(self.name) >>> q = PriorityQueue() >>> q.push(Item('how'), 1) >>> q.push(Item('to'), 5) >>> q.push(Item('do'), 4) >>> q.push(Item('in'), 2) >>> q.push(Item('java'), 1) >>> q.pop() Item('to') #5 >>> q.pop() Item('do') #4 >>> q.pop() Item('in') #2 >>> q.pop() Item('how') #1 >>> q.pop() Item('java') #1 ``` 学习愉快!