Включения и сортировка · 17 из 17
Сортировка из адресной строки
На витрине у Кости сортировка живёт в адресе страницы:
?sort=-kategoriya,cena,nazvanie — сначала по категории от Я к А, внутри — от дешёвых к дорогим, при равной цене — по названию. Порядок полей выбирает покупатель, щёлкая по заголовкам, и полей бывает сколько угодно. У части товаров какого-то поля нет вовсе — например, рейтинга у новинок, — и Костя требует, чтобы такие всегда уходили в конец, в какую сторону ни сортируй.
Что сделать
Отсортируйте товары по полям из адресной строки: минус перед полем — по убыванию, равные по всем полям остаются в прежнем порядке.
Что приходит
tovary— список товаров-словарейporyadok— поля через запятую, например"-kategoriya,cena"; бывает пустой строкой
Что вернуть
Новый список тех же товаров в нужном порядке; переданный не меняется.
Допишите функцию sortirovat в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
Три напитка и "-cena": сначала самый дорогой — [{"nazvanie": "Кофе", "cena": 500}, {"nazvanie": "Чай", "cena": 300}, {"nazvanie": "Какао", "cena": 250}].
sortirovat([{"nazvanie": "Чай", "cena": 300}, {"nazvanie": "Кофе", "cena": 500}, {"nazvanie": "Какао", "cena": 250}], "-cena")
[{'nazvanie': 'Кофе', 'cena': 500}, {'nazvanie': 'Чай', 'cena': 300}, {'nazvanie': 'Какао', 'cena': 250}]
poryadok — имена полей через запятую, главное — первое. Минус перед именем — по убыванию, без минуса — по возрастанию. Пробелы вокруг имён не мешают; пустая строка — порядок не меняется.
Значения одного поля у всех товаров одного вида: числа или строки (строки сравниваются как обычно в Python).
Товар, у которого поля нет или оно None, при сортировке по этому полю идёт после всех товаров, у которых оно есть, — и по возрастанию, и по убыванию. Между собой такие товары упорядочиваются по следующим полям.
Товары, равные по всем полям сортировки, стоят в том порядке, в каком пришли.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.