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

Възможен дубликат:
Какво да използвам за реализация на max-heap в Python?

Опитвам се да внедря по някакъв начин heapq на python, но за max-heap. Решението е използването на (-1) и множество с номера на опашката, но това не ми помага, тъй като трябва да съхранявам URL адреси в купчината. Така че искам максимален heapq, където мога да извадя най-голямата стойност.


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