/
kmip51
/
CRUD
Обзор
Документация
Войти
/
kmip51
/
CRUD
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
dev
filter.py
62 строки
3 KB
Varvar
Дописала тест для проверки Filter()
30 апр 2025, 16:38
30 апр 2025, 16:38
c4e382c
Код
Авторство
О чём код?
from testdict import students # отсеивает информацию по заданным параметрам: #код считывает информацию о студентах и вписывает их в переменную по заданным параметрам #в конце кода с помщью команды append на выход получаем id сдудента(ов) '''ОПИСАНИЕ: ищет строки по параметрам ПАРАМЕТРЫ: q - параметры m - режим фильтрации ("or"(или) или"AND"(и)) f - вспособ сравнения ("f"(полное) или"m"(частичное)) ВОЗВРАЩАЕТ: m - отфильтрованные строки по парамтерам ''' def filter_CRUD(query): mode = query.get('m', 'or') # режим фильтрации по умолчанию "or" compare_mode = query.get('f', 'p') # режим сравнения по умолчанию "p" filtered_results = [] for student_id, student in students.items(): # Проверяем соответствие по заданным параметрам matched = False # если переданно and, то принимаются все заданные параметры # если переданно or, то принимаются некоторые из заданных параметрах # если переменная не подходит заданным параметрам # Если используем AND (совпадение всех полей) if mode == 'AND': # Нужно удовлетворить ВСЕМ условиям conditions_satisfied = True for key, value in query.items(): if key in ["m", "f"]: continue # Пропускаем служебные ключи current_field = student.get(key) if compare_mode == 'f': if current_field != value: conditions_satisfied = False break elif compare_mode == 'p': if value not in str(current_field): conditions_satisfied = False break if conditions_satisfied: matched = True elif mode == 'or': # Достаточно удовлетворения хотя бы одному условию for key, value in query.items(): if key in ["m", "f"]: continue # Пропускаем служебные ключи current_field = student.get(key) if compare_mode == 'f': if current_field == value: matched = True break elif compare_mode == 'p': if value in str(current_field): matched = True break if matched: student_copy = dict(student) student_copy['id'] = student_id filtered_results.append(student_copy) return filtered_results