Ответ 1
unsorted_list.sort(key=lambda x: x[3])
Я хотел бы отсортировать следующий список списков четвертым элементом (целым числом) в каждом отдельном списке.
unsorted_list = [['a','b','c','5','d'],['e','f','g','3','h'],['i','j','k','4','m']]
Как я могу это сделать? Спасибо!
unsorted_list.sort(key=lambda x: x[3])
Используйте 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']]