Часто встречаются ситуации, когда имеется список списков или список кортежей и требуется отсортировать весь список по одному из элементов вложенных списков или кортежей. Возможно, стоит задача отсортировать список данных по второму элементу каждого списка или кортежа.
В качестве примера рассмотрим следующие данные:
data = [[1,2,3], [4,5,6], [7,8,9]]
или
data = [(1,2,3), (4,5,6), (7,8,9)]
Необходимо отсортировать эти списки по второму элементу каждого вложенного списка или кортежа, то есть по числам 2, 5, 8.
Решение
В Python предусмотрена функция sort()
, которая позволяет отсортировать список. Однако, в данном случае, просто вызвать эту функцию не получится, поскольку нужно отсортировать по конкретному элементу вложенного списка или кортежа.
Для решения этой задачи в функцию sort()
можно передать параметр key
, который определяет по какому ключу будет производиться сортировка. В качестве этого ключа можно указать функцию, которая будет применяться к каждому элементу списка перед сортировкой.
В данном случае, в качестве функции можно использовать лямбда-функцию, которая возвращает элемент вложенного списка или кортежа по заданному индексу.
Пример кода для сортировки списка списков:
data = [[1,2,3], [4,5,6], [7,8,9]] data.sort(key=lambda x: x[1])
Пример кода для сортировки списка кортежей:
data = [(1,2,3), (4,5,6), (7,8,9)] data.sort(key=lambda x: x[1])
В обоих случаях результат будет следующим:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
То есть, списки отсортированы по второму элементу каждого вложенного списка или кортежа.
Таким образом, для сортировки списка списков или списка кортежей по элементу на заданном индексе, можно использовать функцию sort()
с параметром key
, в который передается лямбда-функция, возвращающая элемент вложенного списка или кортежа по заданному индексу.
Добавить комментарий