1

我将如何在 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"

我查看了许多示例,例如创建 python 优先级队列,但它们似乎没有定义 apriorty functioncomparator某种类型。

4

1 回答 1

1

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

另一种选择是在您的类上实现__cmp__(或定义__lt____eq__使用functools.total_ordering)以进行必要的比较。这假设您还没有其他比较功能。

于 2013-01-28T23:35:30.243 回答