Valor máximo emergente de un Python heapq. ¿Existe un montón máximo en Python?[duplicar]

StackOverflow https://stackoverflow.com//questions/12681772

  •  12-12-2019
  •  | 
  •  

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.

¿Fue útil?

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
scroll top