Статья Автор: Деникина Н.В., Деникин А.В.

Сортировка словарей. Сложные примеры

🔥 1. Сортировка по длине строки в поле

Допустим, у нас есть список имён, и мы хотим отсортировать их по длине (от самого короткого к длинному):



Функция sorted() принимает аргумент key, который определяет по какому правилу сортировать элементы.

В данном случае используется лямбда-функция:

key=lambda x: len(x["name"])

Она для каждого словаря x из списка:

  • Берет значение по ключу "name" (т.е. имя пользователя).
  • Вычисляет длину этого имени с помощью len().


Сортировка происходит по возрастанию длины имени:

  • Сначала идут имена с меньшим количеством символов.
  • Затем — с большим.
 

🔥 2. Сортировка по нескольким полям

Например, сортируем студентов сначала по оценке (по убыванию), а если оценки равны — по имени (по алфавиту):



В примере выше используется лямбда-функция, которая возвращает кортеж из двух элементов

  • Первый элемент: -x["grade"] - оценка с отрицательным знаком
  • Второй элемент: x["name"] - имя студента

Сортировка по кортежу:

  • Python сортирует сначала по первому элементу кортежа, затем по второму
  • Отрицание оценки (-grade) дает эффект сортировки по убыванию
  • Имена сортируются по возрастанию (по умолчанию)
 

🔥 3. Сортировка по вычисляемому полю

Например, у нас есть товары с ценой и скидкой, и мы хотим отсортировать их по итоговой стоимости:



🔥 4. Сортировка по наличию поля (если ключ может отсутствовать)

Допустим, у некоторых пользователей нет возраста, и мы хотим, чтобы они оказались в конце списка. 



Когда применять сортировку с методом get()

  • Любые случаи работы с "грязными" или неполными данными

Такой подход делает код устойчивым к отсутствию данных и позволяет контролировать позицию элементов с отсутствующими значениями в отсортированном списке.

Печать