Тесты Пообщаться с GPT Протестировать код
Программирование Аналитика Дизайн Маркетинг Управление проектами
11 Окт 2023
2 мин
1480

Сортировка списка объектов по атрибуту в Python

Пройдите тест, узнайте какой профессии подходите

Типичная проблема, с которой сталкиваются программисты на Python — необходимость отсортировать список объектов по одному из атрибутов объекта. Возьмем

Типичная проблема, с которой сталкиваются программисты на Python — необходимость отсортировать список объектов по одному из атрибутов объекта. Возьмем для примера список объектов класса Book, где каждый объект имеет атрибуты title и pages.

class Book:
    def __init__(self, title, pages):
        self.title = title
        self.pages = pages

books = [
    Book('War and Peace', 1225),
    Book('The Catcher in the Rye', 277),
    Book('To Kill a Mockingbird', 281),
    Book('1984', 328)
]

Задача состоит в том, чтобы отсортировать этот список по количеству страниц (pages) в порядке убывания.

Существует несколько способов решения этой задачи на Python. Один из самых удобных и популярных — использование встроенной функции sort() или функции sorted(). Обе эти функции принимают ключевой аргумент key, который определяет по какому принципу будет происходить сортировка.

books.sort(key=lambda book: book.pages, reverse=True)

В этом примере lambda-функция используется для определения атрибута, по которому будет происходить сортировка (book.pages). Аргумент reverse=True указывает на то, что сортировка должна быть выполнена в порядке убывания.

Теперь список книг отсортирован по количеству страниц, начиная с самой объемной:

for book in books:
    print(book.title, book.pages)

На выходе получаем:

War and Peace 1225
1984 328
To Kill a Mockingbird 281
The Catcher in the Rye 277

Стоит отметить, что функция sort() сортирует список на месте (т.е. изменяет исходный список), в то время как функция sorted() возвращает новый отсортированный список, не меняя исходный.

Добавить комментарий