Как отсортировать список в 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.

Видео по теме

Как отсортировать список словарей в python?

53 Сортировка коллекций в Python. Метод sort и функция sorted

54 Сортировка по ключу Python. Аргумент key | Сортировка Python

Похожие статьи:

Как написать программу для вычисления функции на Python: простой руководство с примерами и советами для начинающих 🐍

Как проверить функцию в Питоне? 🧪🐍 Простой гид для начинающих

🎮 Как создать сетевую игру на питоне: пошаговое руководство для начинающих

Как отсортировать список в Python по двум ключам 🐍🔑 Руководство со скриншотами

🔧 Как обновить пакет Python: простая инструкция для начинающих 🔧

Как установить goto на Python: простой шаг-за-шагом руководство

Как ловить ошибку в Python и не падать духом 😅🐍