Ho bisogno di una coda di priorità che ottiene prima l'elemento con il valore di priorità più alto. Attualmente sto usando la classe PriorityQueue dalla libreria Queue. Tuttavia, questa funzione restituisce solo gli elementi con il valore più basso per primi. Ho provato alcune soluzioni brutte come (sys.maxint - priority) come priorità, ma mi chiedevo solo se esiste una soluzione più elegante.Coda prioritaria con priorità più alta prima in Python
9
A
risposta
15
Utilizzare invece una priorità negativa, senza sottrarre da sys.maxint
.
queue.put((-priority, item))
Un elemento con priorità -10 verrà restituito prima degli elementi con priorità -5, ad esempio.
Mentre funziona, mi infastidisce sinceramente perché ciò implica che tutte le altre logiche associate si sono invertite nella tua testa. – blueman
@blueman: quindi sottoclasse la classe della coda e sovrascrive i metodi per invertire la priorità per te. –