Извлеките максимальное значение из python heapq, есть ли в Python max-heap?

Возможный дубликат:
Что мне использовать для реализации максимальной кучи в Python?

Я пытаюсь каким-то образом реализовать кучу python, но для максимальной кучи. В решении используется (-1) и несколько с номерами очереди, но это мне не помогает, так как мне нужно хранить URL-адреса в куче. Итак, я хочу максимальную кучу, где я могу извлечь наибольшее значение.


person Mike B    schedule 01.10.2012    source источник


Ответы (1)


Оберните объекты в оболочку обратного сравнения:

import functools

@functools.total_ordering
class ReverseCompare(object):
    def __init__(self, obj):
        self.obj = obj
    def __eq__(self, other):
        return isinstance(other, ReverseCompare) and self.obj == other.obj
    def __le__(self, other):
        return isinstance(other, ReverseCompare) and self.obj >= other.obj
    def __str__(self):
        return str(self.obj)
    def __repr__(self):
        return '%s(%r)' % (self.__class__.__name__, self.obj)

Использование:

import heapq
letters = 'axuebizjmf'
heap = map(ReverseCompare, letters)
heapq.heapify(heap)
print heapq.heappop(heap) # prints z
person nneonneo    schedule 01.10.2012
comment
Большое спасибо, это было действительно полезно. - person Mike B; 04.10.2012