2013-02-27 11 views
9

Ich brauche eine Prioritätswarteschlange, die zuerst das Element mit dem höchsten Prioritätswert erhält. Ich verwende derzeit die PriorityQueue-Klasse aus der Queue-Bibliothek. Diese Funktion gibt jedoch nur die Elemente mit dem niedrigsten Wert zuerst zurück. Ich habe einige hässliche Lösungen wie (sys.maxint - priority) als Priorität versucht, mich aber gefragt, ob es eine elegantere Lösung gibt.Prioritätswarteschlange mit höherer Priorität zuerst in Python

Antwort

15

Verwenden Sie stattdessen eine negative Priorität, keine Subtraktion von sys.maxint.

Ein Element mit der Priorität -10 wird z. B. vor Elementen mit der Priorität -5 zurückgegeben.

+0

Während dies funktioniert, stört mich ehrlich, weil das bedeutet, dass alle anderen verbundenen Logik in Ihrem Kopf umgekehrt ist. – blueman

+1

@blueman: Unterklasse dann die Queue-Klasse und überschreiben Sie die Methoden, um die Priorität für Sie zu invertieren. –

Verwandte Themen