我需要在Python代码中使用优先级队列.为了寻找有效的东西,我遇到了堆积.它看起来不错,但似乎只为整数指定.我认为它适用于具有比较运算符的任何对象,但它没有指定它需要哪些比较运算符.
此外,heapq似乎是用Python实现的,所以它并不快.
您是否了解Python中优先级队列的任何快速实现?最理想的情况是,我希望队列是通用的(即适用于具有指定比较运算符的任何对象).
提前致谢
更新:
重新比较heapq,我可以使用(priority, object)查理马丁建议的,或者只是__cmp__为我的对象实现.
我还在寻找比他更快的东西heapq.
我有一个构建霍夫曼树的方法,如下所示:
def buildTree(tuples) :
while len(tuples) > 1 :
leastTwo = tuple(tuples[0:2]) # get the 2 to combine
theRest = tuples[2:] # all the others
combFreq = leastTwo[0][0] + leastTwo[1][0] #enter code here the branch points freq
tuples = theRest + [(combFreq,leastTwo)] # add branch point to the end
tuples.sort() # sort it into place
return tuples[0] # Return the single tree inside the list
Run Code Online (Sandbox Code Playgroud)
但是我用以下参数提供函数:
[(1, 'b'), (1, 'd'), (1, 'g'), (2, 'c'), (2, 'f'), (3, 'a'), (5, 'e')] …Run Code Online (Sandbox Code Playgroud) 我正在尝试学习Python的东西,并想知道是否有人可以帮助我使用优先级队列的一些例子.我在java中知道它们是如何工作的,但似乎无法看到它们如何在Python中工作的清晰示例.就像我从这里看到队列的大小是.qsize():http://docs.python.org/2/library/queue.html 但它没有显示获得最小值,最大值,组织的示例,弹出,添加到队列中,对它们进行排序,迭代它们.如果有人可以给我一个这样的例子,或者指出我在哪里学习这个方向的正确方向,我真的很感激.