Diciamo che ho una lista come di seguito:Ordinamento di un elenco nidificato da due elementi
[['Harry', '4'], ['Anthony', '10'], ['Adam', '7'], ['Joe', '6'], ['Ben', '10']]
# we can say the first element in it's lists is `name`, the second is `score`
voglio sorta a:
[['Anthony', '10'], ['Ben', '10'], ['Adam', '7'], ['Joe', '6'], ['Harry', '4']]
Così Ordina in ordine decrescente di punteggio e quindi ordinalo in ordine crescente per nome.
ho provato:
>>> sorted(l, key=lambda x: (int(x[1]), x[0]))
[['Harry', '4'], ['Joe', '6'], ['Adam', '7'], ['Anthony', '10'], ['Ben', '10']]
E 'di lavoro, così ora ho solo bisogno di invertire tale tendenza:
>>> sorted(l, key=lambda x: (int(x[1]), x[0]), reverse=True)
[['Ben', '10'], ['Anthony', '10'], ['Adam', '7'], ['Joe', '6'], ['Harry', '4']]
Ah, reverse=True
semplicemente invertito la lista, ma non ha dato il aspettarsi uscita. Quindi voglio solo invertire l'output di int(x[1])
, ma non x[0]
.
Come posso farlo?