Questo dovrebbe funzionare bene:
lst.sort(key=lambda x:x[2], reverse=True)
Naturalmente, siamo in grado di evitare il lambda da:
import operator
lst.sort(key=operater.itemgetter(2), reverse=True)
Se si desidera ordinare su più condizioni, è possibile creare funzioni interessanti per tornare tuple (le tuple si ordinano per primo indice, poi secondo, poi terzo ...), oppure puoi usare il fatto che i tipi di python sono garantiti come stabili. Quindi, se si desidera che l'elenco sia ordinato principalmente in base al peso e quindi in base al nome del nodo, basta ordinare prima il nome del nodo e poi il peso. (l'ordine inverso è un po 'controintuitivo).
Se ho capito la tua domanda (dopo una ri-leggere e vedere alcuni dei commenti qui) si sta sorta può essere fatto come segue:
lst.sort(key=lambda x: (-x[2],x[0])) #relying on tuples
Questo ordina in primo luogo, in peso (un numero elevato prima) e quindi da node1 alfabeticamente per oggetti con lo stesso peso.
Si noti che questo funziona solo se è possibile negare x[2]
affinché i numeri alti vengano visualizzati per primi nell'ordinamento (ad esempio, non funzionerebbe con le stringhe). Un modo più affidabile per realizzare la stessa cosa (anche se meno efficiente?) Sarebbe:
lst.sort(key=lambda x: x[0])
lst.sort(key=lambda x: x[2], reversed=True)
Intendi il "bordo con peso superiore"? Suppongo che la tupla '(nodo1, nodo2, peso)' rappresenti un bordo. –