Answer

Answer

t.me/python_tesst

Ответ:

{'title': 'Clash of Kings', 'published': '1998-11-16', 'pages': 761}

{'title': 'Dance with Dragons', 'published': '2011-07-12', 'pages': 1016}

{'title': 'Feast for Crows', 'published': '2005-10-17', 'pages': 753}

{'title': 'Game of Thrones', 'published': '1996-08-01', 'pages': 694}

{'title': 'Storm of Swords', 'published': '2000-08-08', 'pages': 973}

-------------

{'title': 'Game of Thrones', 'published': '1996-08-01', 'pages': 694}

{'title': 'Clash of Kings', 'published': '1998-11-16', 'pages': 761}

{'title': 'Storm of Swords', 'published': '2000-08-08', 'pages': 973}

{'title': 'Feast for Crows', 'published': '2005-10-17', 'pages': 753}

{'title': 'Dance with Dragons', 'published': '2011-07-12', 'pages': 1016}

-------------

{'title': 'Game of Thrones', 'published': '1996-08-01', 'pages': 694}

{'title': 'Feast for Crows', 'published': '2005-10-17', 'pages': 753}

{'title': 'Clash of Kings', 'published': '1998-11-16', 'pages': 761}

{'title': 'Storm of Swords', 'published': '2000-08-08', 'pages': 973}

{'title': 'Dance with Dragons', 'published': '2011-07-12', 'pages': 1016}

Объяснение:

Допустим, у нас есть обычный список (не важно состоящий из строк или чисел) и нам надо его отсортировать. В таких ситуациях, действительно, хватает обычного sorted() (ну или sort(), если вам нужно изменить текущий список на месте без создания нового, изменив исходный). Но что, если нужно отсортировать список словарей по разным ключам? Тут может быть запись как в классическом стиле, так и в функциональном. Допустим, у нас есть список книг вселенной Песни Льда и Пламени с датами их публикаций и количеством страниц в них. Описанный процесс внутри программы хорошо подходит для сортировки многомерных списков по разным параметрам.

Код:

# Создали список из словарей книг
asoiaf_books = [
 {'title' : 'Game of Thrones', 'published' : '1996-08-01', 'pages': 694},
 {'title' : 'Clash of Kings', 'published' : '1998-11-16', 'pages': 761},
 {'title' : 'Storm of Swords', 'published' : '2000-08-08', 'pages': 973},
 {'title' : 'Feast for Crows', 'published' : '2005-10-17', 'pages': 753},
 {'title' : 'Dance with Dragons', 'published' : '2011-07-12', 'pages': 1016}
]

# Функция по получению названия книги
def get_title(book):
  return book.get('title')

# Функция по получению даты публикации книги
def get_publish_date(book):
  return book.get('published')

# Функция по получению количества страниц в книге
def get_pages(book):
  return book.get('pages')

# Сортируем по названию
asoiaf_books.sort(key=get_title)
for book in asoiaf_books:
 print(book)
print('-------------')
# Сортируем по датам
asoiaf_books.sort(key=get_publish_date)
for book in asoiaf_books:
 print(book)
print('-------------')
# Сортируем по количеству страниц
asoiaf_books.sort(key=get_pages)
for book in asoiaf_books:
 print(book)


Report Page