Умный менеджер контактов
Часть раздела Логика и управление потоком выполнения путешествия по Python на Coddy. Урок 76 из 78.
Задание
СреднеСоздайте функцию с именем organize_contacts, которая обрабатывает список словарей контактов, чтобы создать чистую базу данных контактов.
Каждый словарь контакта во входном списке содержит следующие ключи:
name: Имя человекаemail: Адрес электронной почты человекаphone: Номер телефона человека
Ваша функция должна:
- Удалять дубликаты контактов (контакты с одинаковым адресом электронной почты или номером телефона), сохраняя первое вхождение
- Приводить все адреса электронной почты к нижнему регистру
- Отфильтровывать контакты с недействительными адресами электронной почты
- Отфильтровывать контакты с недействительными номерами телефонов
- Возвращать список очищенных словарей контактов
Правила validation:
- Допустимый email: должен содержать '@' и '.', а также не должен содержать пробелов
- Допустимый phone: должен содержать ровно 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. Создайте вспомогательные функции для валидации
# - Функция для проверки формата email
# - Функция для очистки и проверки номеров телефонов
# 2. Обработайте каждый контакт
# - Очистите email (строчными буквами) и телефон (только цифры)
# - Проверьте, действительны ли email и телефон
# - Проверьте на дубликаты
# 3. Верните очищенный список контактов
passВсе уроки раздела Логика и управление потоком выполнения
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Потренируйтесь самостоятельно: Онлайн-компилятор Python