Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Сортировка списков внутри списка

Надежда Куйбина Ученик (175), на голосовании 2 месяца назад
Привет! У меня есть вот такой список списков [['Sergeev', 'Petr', '92'], ['Petrov', 'Vasiliy', '98']]. Как мне отсортировать списки внутри, чтоб они шли по убыванию 2 индекса? В итоге должно быть так [['Petrov', 'Vasiliy', '98'], ['Sergeev', 'Petr', '92']]
Голосование за лучший ответ
Celtic Hammer Мудрец (15906) 3 месяца назад
m = [['Sergeev', 'Petr', '92'], ['Petrov', 'Vasiliy', '98']]
n = list(reversed(sorted(m, key=lambda x: x[2])))
print(n)
>>>
[['Petrov', 'Vasiliy', '98'], ['Sergeev', 'Petr', '92']]
damn Просветленный (47228) 3 месяца назад
Можно использовать функцию sorted() с параметром key.
Например:
 lst = [['Sergeev', 'Petr', '92'], ['Petrov', 'Vasiliy', '98']] 
sorted_lst = sorted(lst, key=lambda x: int(x[2]), reverse=True)
print(sorted_lst)
Celtic HammerМудрец (15906) 3 месяца назад
Питону по фиг на int в int(x[2])
damn Просветленный (47228) Это сделано на случай, если в будущем данные изменятся или в списке появятся нечисловые строки.
Celtic HammerМудрец (15906) 3 месяца назад
Тип данных при сортировке был бы важен в других языках. Но не в Питоне
スネーク フリーフライト Ученик (223) 3 месяца назад
 Я не копировал код сверху, просто он верный

data = [['Sergeev', 'Petr', '92'], ['Petrov', 'Vasiliy', '98']]

sorted_data = sorted(data, key=lambda x: int(x[2]), reverse=True)

print(sorted_data)
Похожие вопросы