首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建python优先级队列

创建python优先级队列
EN

Stack Overflow用户
提问于 2010-07-23 01:13:30
回答 3查看 6.5K关注 0票数 0

我想在python中构建一个优先级队列,队列中包含不同的字典和它们的优先级编号。因此,当调用"get function“时,具有最高优先级(最低编号)的字典将被从队列中拉出,而当调用"add function”时,新字典将被添加到队列中,并根据其优先级编号进行排序。

请帮帮忙..。

提前感谢!

EN

回答 3

Stack Overflow用户

发布于 2010-07-23 01:15:19

使用标准库中的heapq模块。

您没有指定如何将优先级与字典相关联,但这里有一个简单的实现:

代码语言:javascript
复制
import heapq

class MyPriQueue(object):
    def __init__(self):
        self.heap = []

    def add(self, d, pri):
        heapq.heappush(self.heap, (pri, d))

    def get(self):
        pri, d = heapq.heappop(self.heap)
        return d
票数 6
EN

Stack Overflow用户

发布于 2010-07-23 01:47:40

这是我通常在我的一些模式演讲中作为附注介绍的内容:

代码语言:javascript
复制
class PriorityQueue(object):
 def __init__(self, key=lambda x: x):
   self.l = []
   self.key = key
 def __len__(self):
   return len(self.l)
 def push(self, obj):
   heapq.heappush(self.l, (self.key(obj), obj))
 def pop(self):
   return heapq.heappop(self.l)[-1]

OP的要求显然是在实例化PriorityQueue时使用operator.itemgetter('priority')作为key参数(当然,在模块顶部需要一个import operator;-)。

票数 2
EN

Stack Overflow用户

发布于 2010-07-23 01:27:39

您可以通过将dict对象添加到类中并在其中进行搜索来完成此操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3311480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档