Подтвердить что ты не робот

Python - Как отсортировать список списков по четвертому элементу в каждом списке?

Я хотел бы отсортировать следующий список списков четвертым элементом (целым числом) в каждом отдельном списке.

unsorted_list = [['a','b','c','5','d'],['e','f','g','3','h'],['i','j','k','4','m']]

Как я могу это сделать? Спасибо!

4b9b3361

Ответ 1

unsorted_list.sort(key=lambda x: x[3])

Ответ 2

Используйте sorted() с key следующим образом:

>>> unsorted_list = [['a','b','c','5','d'],['e','f','g','3','h'],['i','j','k','4','m']]
>>> sorted(unsorted_list, key = lambda x: int(x[3]))
[['e', 'f', 'g', '3', 'h'], ['i', 'j', 'k', '4', 'm'], ['a', 'b', 'c', '5', 'd']]

lambda возвращает четвертый элемент каждого из внутренних списков, а функция sorted использует это для сортировки списка. Это предполагает, что int(elem) не будет работать для списка.

Или используйте itemgetter (как отметил комментарий Ashwini, этот метод не сработает, если у вас есть строковые представления чисел, так как они привязаны к чему-то для 2 + цифр)

>>> from operator import itemgetter
>>> sorted(unsorted_list, key = itemgetter(3))
[['e', 'f', 'g', '3', 'h'], ['i', 'j', 'k', '4', 'm'], ['a', 'b', 'c', '5', 'd']]