Назад к задачам
Junior — Senior
5

Гибкая фильтрация объявлений по ценовому диапазону и названию

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Имеется массив объектов‑объявлений. Требуется реализовать функцию, которая возвращает те объявления, цены которых находятся внутри указанного диапазона и/или название которых содержит заданный подстроковый запрос. Каждый из критериев – нижняя граница цены, верхняя граница цены и поисковый запрос по названию – должен быть необязательным, т.е. если параметр не передан, соответствующий фильтр не применяется.

items = [
    {"title": "3-к. квартира, 80м², 13/22 эт.", "rooms": 3, "price": 70000, "petFriendly": True},
    {"title": "2-к. квартира, 45м², 5/5 эт.", "rooms": 2, "price": 60000, "petFriendly": False, "deposit": 60000},
    {"title": "2-к. квартира, 44м², 4/4 эт.", "rooms": 2, "price": 45000, "petFriendly": True, "agency": True},
    {"title": "2-к. квартира, 44м², 4/4 эт.", "rooms": 2, "price": 45000, "petFriendly": True, "agency": True, "fee": 45000},
    # ...
]

Функция должна принимать список объявлений и три необязательных аргумента: min_price, max_price и query. При отсутствии любого из этих аргументов соответствующий критерий фильтрации игнорируется. Возвращаемое значение – список объявлений, удовлетворяющих всем указанным условиям.

Пример вызова:

result = filter_ads(items, min_price=50000, max_price=80000, query="квартира")