Как отсортировать список в Python по двум ключам 🐍🔑 Руководство со скриншотами
Чтобы отсортировать список по двум ключам в Python, вы можете использовать функцию sorted()
с параметром key
, в котором вы определите два ключевых аргумента для сортировки.
# Пример списка
список = [('Анна', 28), ('Ярослав', 25), ('Мария', 30)]
# Сортировка по первому ключу (имя)
сортированный_список = sorted(список, key=lambda x: x[0])
# Сортировка по второму ключу (возраст)
сортированный_список = sorted(сортированный_список, key=lambda x: x[1])
print(сортированный_список)
В приведенном коде список сортируется сначала по первому ключу (имени) с помощью функции sorted()
,
а затем по второму ключу (возрасти) с использованием той же функции.
В результате получается список, отсортированный по обоим ключам.
Детальный ответ
Python: Как отсортировать список по двум ключам
В Python существует несколько способов для сортировки списка по двум или более ключам. В этой статье мы рассмотрим различные подходы и предоставим примеры кода для каждого из них.
Метод sorted()
Один из способов отсортировать список по двум ключам - использовать функцию sorted(). Функция sorted() принимает два параметра: итерируемый объект (в нашем случае список) и функцию-ключ (которая определяет порядок сортировки).
# Пример сортировки списка по двум ключам
# Создание списка объектов, каждый из которых содержит два атрибута: name и age
students = [
{'name': 'Анна', 'age': 21},
{'name': 'Петр', 'age': 19},
{'name': 'Мария', 'age': 23},
{'name': 'Иван', 'age': 20}
]
# Функция-ключ, которая будет использоваться для сортировки
def sort_by_name_and_age(student):
return (student['name'], student['age'])
# Отсортированный список с помощью функции sorted()
sorted_students = sorted(students, key=sort_by_name_and_age)
# Вывод отсортированного списка
for student in sorted_students:
print(student)
В этом примере мы создали список студентов, каждый из которых представлен в виде словаря с ключами 'name' и 'age'. Затем мы определили функцию sort_by_name_and_age(), которая возвращает кортеж из двух значений: 'name' и 'age'. Функция-ключ используется для определения порядка сортировки.
Примечание: Функция-ключ может быть любой функцией, которая может принять один элемент из списка и возвращает значение, по которому будет выполняться сортировка.
Метод sort()
Еще один способ сортировки списка по двум ключам - использовать метод sort(). Метод sort() также принимает функцию-ключ. Разница заключается в том, что метод sort() сортирует список "на месте", то есть изменяет сам список, в то время как функция sorted() возвращает новый отсортированный список.
# Пример сортировки списка по двум ключам
# Создание списка объектов, каждый из которых содержит два атрибута: name и age
students = [
{'name': 'Анна', 'age': 21},
{'name': 'Петр', 'age': 19},
{'name': 'Мария', 'age': 23},
{'name': 'Иван', 'age': 20}
]
# Функция-ключ, которая будет использоваться для сортировки
def sort_by_name_and_age(student):
return (student['name'], student['age'])
# Сортировка списка "на месте" с помощью метода sort()
students.sort(key=sort_by_name_and_age)
# Вывод отсортированного списка
for student in students:
print(student)
Определение порядка сортировки
В предыдущих примерах список студентов сортировался по имени ('name') и возрасту ('age') в порядке возрастания. Однако можно определить порядок сортировки по желанию.
# Пример сортировки списка студентов по имени в порядке убывания и возрасту в порядке возрастания
students = [
{'name': 'Анна', 'age': 21},
{'name': 'Петр', 'age': 19},
{'name': 'Мария', 'age': 23},
{'name': 'Иван', 'age': 20}
]
def sort_by_name_and_age(student):
return (student['name'], -student['age'])
sorted_students = sorted(students, key=sort_by_name_and_age)
for student in sorted_students:
print(student)
В этом примере используется знак "-" перед значением 'age' в функции-ключе sort_by_name_and_age(). Это обратит порядок сортировки по возрасту, делая его убывающим. Имя ('name') по-прежнему сортируется в порядке возрастания.
Заключение
В этой статье мы рассмотрели различные способы сортировки списка по двум ключам в Python. Мы использовали функцию sorted() и метод sort() с функциями-ключами для определения порядка сортировки. Комбинируя значения ключей в кортежи или изменяя знаки перед ними, мы можем управлять порядком сортировки. Надеюсь, эта статья была полезной и помогла вам разобраться в сортировке списков в Python.