Pop valeur maximale d'un tas python, y a-t-il un tas maximum en Python?[dupliquer]
Question
Duplicata Possible:
Qu'est-ce que j'utilise pour une implémentation max-heap en Python?
J'essaie d'implémenter d'une certaine manière le heapq de python mais pour un tas maximum.Une solution consiste à utiliser le (-1) et le multiple avec les numéros de la file d'attente, mais cela ne m'aide pas car j'ai besoin de stocker des URL dans le tas.Je veux donc un tas maximum où je peux afficher la plus grande valeur.
La solution
Enveloppez les objets dans un wrapper de comparaison inverse:
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)
Utilisation:
import heapq
letters = 'axuebizjmf'
heap = map(ReverseCompare, letters)
heapq.heapify(heap)
print heapq.heappop(heap) # prints z
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow