Menu
Coddy logo textTech

スマート連絡先マネージャー

CoddyのPythonジャーニー「Logic & Flow」セクションの一部 — レッスン 76/78。

challenge icon

チャレンジ

中級

連絡先の辞書のリストを処理して、クリーンな連絡先データベースを作成する organize_contacts という名前の関数を作成してください。

入力リストの各連絡先辞書には、以下のキーがあります:

  • name: その人の名前
  • email: その人のメールアドレス
  • phone: その人の電話番号

あなたの関数は以下のことを行う必要があります:

  1. 重複する連絡先(同じメールアドレスまたは電話番号を持つ連絡先)を削除し、最初に出現したものを保持します
  2. すべてのメールアドレスを小文字に標準化します
  3. 無効なメールアドレスを持つ連絡先をフィルタリングして除外します
  4. 無効な電話番号を持つ連絡先をフィルタリングして除外します
  5. クリーンアップされた連絡先辞書のリストを返します

バリデーションルール:

  • 有効なメールアドレス: '@' と '.' を含み、スペースを含んではいけません
  • 有効な電話番号: 正確に10桁の数字を含んでいる必要があります(ダッシュや括弧などの数字以外の文字は無視してください)

電話番号のクリーンアップには、Pythonの str.isdigit() メソッドを使用して、電話番号から数字のみを抽出する必要があります。このメソッドは、文字が数字(0-9)であれば True を、そうでなければ 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. 各連絡先を処理する
    # - メールをクリーンアップ(小文字化)し、電話番号をクリーンアップ(数字のみ)する
    # - メールと電話番号が有効かどうかを確認する
    # - 重複を確認する
    
    # 3. クリーンな連絡先リストを返す
    pass

Logic & Flowのすべてのレッスン