获取最高优先级的python优先级队列返回项

时间:2011-10-15 07:15:55

标签: python priority-queue

我在python 2.7中使用Queue.Priority类,如下所示

q=Queue.PriorityQueue()
q.put((2,"second"))
q.put((1,"first"))
q.put((3,"third"))
print q.get(True)
print q.get(True)
print q.get(True)

这将返回以下结果,因为get()返回优先级最低的项

(1, 'first')
(2, 'second')
(3, 'third') 

假设,我需要返回最高优先级的项目。我该怎么办?除了覆盖get()方法之外,有没有办法做到这一点?

1 个答案:

答案 0 :(得分:3)

如果它只是元组的第一个元素,它是一个整数,你可以简单地否定它:

q=Queue.PriorityQueue()
q.put((-2,"second"))
q.put((-1,"first"))
q.put((-3,"third"))
print q.get(True)
print q.get(True)
print q.get(True)

这将打印出来:

(-3, 'third') 
(-2, 'second')
(-1, 'first')