Умный менеджер контактов
Часть раздела Logic & Flow путешествия по Python на Coddy — урок 76 из 78.
Задание
СреднеСоздайте функцию с именем organize_contacts, которая обрабатывает список словарей контактов для создания чистой базы данных контактов.
Каждый словарь контактов во входном списке имеет следующие ключи:
name: Имя человекаemail: Адрес электронной почты человекаphone: Номер телефона человека
Ваша функция должна:
- Удалять дубликаты контактов (контакты с одинаковым адресом электронной почты или номером телефона), сохраняя первое вхождение
- Приводить все адреса электронной почты к нижнему регистру
- Отфильтровывать контакты с невалидными адресами электронной почты
- Отфильтровывать контакты с невалидными номерами телефонов
- Возвращать список очищенных словарей контактов
Правила валидации:
- Валидный email: Должен содержать '@' и '.', и не должен содержать пробелов
- Валидный телефон: Должен содержать ровно 10 цифр (игнорируйте нецифровые символы, такие как тире или скобки)
Для очистки номеров телефонов вам следует использовать метод Python str.isdigit(), чтобы извлечь из номеров телефонов только числовые цифры. Этот метод возвращает True, если символ является цифрой (0-9), и False в противном случае, что делает его идеальным для фильтрации нецифровых символов.
Пример входных данных:
contacts = [
{"name": "John Doe", "email": "john@email.com", "phone": "123-456-7890"}
]Ожидаемый результат:
[
{"name": "John Doe", "email": "john@email.com", "phone": "1234567890"}
]Попробуйте сами
def organize_contacts(contact_list):
# Ваше решение здесь
# 1. Создайте вспомогательные функции для валидации
# - Функция для проверки формата электронной почты
# - Функция для очистки и проверки номеров телефонов
# 2. Обработайте каждый контакт
# - Очистите email (нижний регистр) и телефон (только цифры)
# - Проверьте, являются ли email и телефон валидными
# - Проверьте на наличие дубликатов
# 3. Верните очищенный список контактов
passВсе уроки раздела Logic & Flow
1Изучение переменных
КонстантыМножественное присваиваниеОбмен значениями переменныхПеременные-заполнителиОкругление чиселПриведение к списку4Приложение «Книга контактов»
Показать менюДобавить контакт7Множества. Часть 2
Математические операции. Часть 1Математические операции. Часть 2Повторение — Охота за сокровищамиПодмножества и надмножестваИтерация по множествамПовторение — Трекер турнира10Базовые генераторы списков
СинтаксисСоздание простых списковДобавление условийИспользование агрегации данныхПовторение — Дом списковПовторение — Элементы свободы13Система управления запасами
Обзор проектаДобавление товара2Словари. Часть 1
Что такое словарь?Создание словаряДоступ к значениямИзменение словарейИтоги — Менеджер рецептов5Продвинутое принятие решений
Тернарный операторПроверка вхожденияПроверка идентичностиОшибки отступовПовторение — Фильтр отпусков8Менеджер записей студентов
Обзор проектаДобавить студента11Продвинутые функции
Возврат нескольких значенийLambda-функции. Часть 1Lambda-функции. Часть 2Задача на повторение — Lambda-сортировкаРекурсивные функции. Часть 1Рекурсивные функции. Часть 2Повторение — сумма вложенного списка14Функции высшего порядка
Функция mapФункция filterПовторение — Валидатор emailПовторение — Обработчик чисел3Словари. Часть 2
Методы словарейВложенные словариПроверка наличия ключейПеребор словарей в циклеПовторение: счетчик частоты6Множества. Часть 1
Что такое множество?Основные операцииМетоды множествПовторение — удаление дубликатов9Продвинутая агрегация данных
Использование SumПоиск минимума и максимумаЭффективная сортировка данныхПовторение — Dictionary Sorter