2017-12-26 2 views

Antwort

1

Sie müssen special methods zum Vergleich schreiben. heapq führt intern Vergleiche mit Elementen durch, die zum Heap hinzugefügt werden. Ihr Code schlägt fehl, da das hinzugefügte Element ein Objekt ist und das Objekt standardmäßig keine Vergleiche durchführen kann.

Wir müssen spezielle Methoden __lt__ (<) oder __gt__ (>) definieren, um zwei Objekte zu vergleichen.

Zum Beispiel in Ihrem Programm, können Sie __lt__ Methode unter Klassenknoten wie unten hinzufügen, um auf Freq Eigenschaft der Klasse Node zu vergleichen.

def __lt__(self, other): 
    return self.freq < other.freq 

Jetzt können Sie < Vergleiche auf Objekten durchführen, ähnlich können Sie schreiben für>,> =, < = oder == Vergleiche auch.

Verwandte Themen