Valor máximo emergente de un Python heapq. ¿Existe un montón máximo en Python?[duplicar]
Pregunta
Posible duplicado:
¿Qué uso para una implementación de montón máximo en Python?
Estoy intentando implementar de alguna manera el montón de Python pero para un montón máximo.Una solución es usar (-1) y múltiples números de la cola, pero eso no me ayuda porque necesito almacenar las URL en el montón.Entonces quiero un montón máximo donde pueda extraer el valor más grande.
Solución
Envuelva los objetos en un contenedor de comparación inversa:
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)
Uso:
import heapq
letters = 'axuebizjmf'
heap = map(ReverseCompare, letters)
heapq.heapify(heap)
print heapq.heappop(heap) # prints z
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow