如何在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 function
或comparator
。
答案 0 :(得分:1)
一个选项是将(A.pulp, A)
作为优先级队列中的值。这样,它将使用元组比较来首先比较pulp
值。
另一个选择是在您的班级上实施__cmp__
(或定义__lt__
和__eq__
并使用functools.total_ordering
)进行必要的比较。这假设您已经没有其他比较功能了。