Python中优先级队列的优先级功能

时间:2013-01-28 23:32:05

标签: java python-2.7 priority-queue

如何在Python中编写以下Java PriorityQueue?

PriorityQueue<Integer[]> pq = new PriorityQueue<Integer[]>(11,
        new Comparator<Integer[]>() {
          public int compare(Integer[] A, Integer[] B) {
            return A[0] < B[0] ? -1 : 1;
          }
        });

我到目前为止

from Queue import PriorityQueue
def my_method(self):
  pq = # I got stuck here since I need to include "comparator"

我查看过Creating a python priority Queue等许多示例,但他们似乎并没有定义某种priorty functioncomparator

1 个答案:

答案 0 :(得分:1)

一个选项是将(A.pulp, A)作为优先级队列中的值。这样,它将使用元组比较来首先比较pulp值。

另一个选择是在您的班级上实施__cmp__(或定义__lt____eq__并使用functools.total_ordering)进行必要的比较。这假设您已经没有其他比较功能了。