Powiedzmy mam listę jak poniżej:Sortuj zagnieżdżona lista dwoma elementami
[['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`
Chcę sortowania go:
[['Anthony', '10'], ['Ben', '10'], ['Adam', '7'], ['Joe', '6'], ['Harry', '4']]
więc najpierw rozwiązać to w porządku malejącym według punktacji i następnie posortuj ją w porządku rosnącym według nazwy.
Próbowałem:
>>> sorted(l, key=lambda x: (int(x[1]), x[0]))
[['Harry', '4'], ['Joe', '6'], ['Adam', '7'], ['Anthony', '10'], ['Ben', '10']]
To działa, więc teraz po prostu trzeba odwrócić go:
>>> sorted(l, key=lambda x: (int(x[1]), x[0]), reverse=True)
[['Ben', '10'], ['Anthony', '10'], ['Adam', '7'], ['Joe', '6'], ['Harry', '4']]
Ach, reverse=True
prostu odwrócić listę, ale nie dać oczekiwać produkcji. Więc chcę tylko odwrócić wyjście int(x[1])
, ale nie x[0]
.
Jak mogę to zrobić?