Как избавиться от if'ов
Задача: отсортировать список, в котором хранятся словари. У словарей +- одинаковые ключи и значения (пример ниже).
Проблема в том, что при увеличении количества принимаемых аргументов, по которым фильтруем словари, увеличивается количество блоков if [Аргумент функции] not None
. Как этого можно избежать? И какой самый оптимальный вариант решения этой задачи?
arr = [
{'title': 'Dom kva', 'price':2000}, # ключ-значение может быть больше
{'title': 'dom2 kva', 'price':3000},
{'title': 'dom3', 'price':3555},
{'title': 'dom4','price':4000},
{'title':'dom6 kva','price':3540}
]
def sort_price(array:list, high :int=None , low: int=None, text : str=None) -> list:
sort_arr = []
for item in array:
if low is not None:
if item['price'] < low:
continue
if high is not None:
if item['price'] > high:
continue
if text is not None:
if text not in item['title']:
continue
sort_arr.append(item)
return sort_arr
print(sort_price(arr,3999,2000,'kva')) # выводит в консоль [{'title': 'Dom kva', 'price': 2000}, {'title': 'dom2 kva', 'price': 3000}, {'title': 'dom6 kva', 'price': 3540}]