スマート連絡先マネージャー
CoddyのPythonジャーニー「ロジックとフロー」セクションの一部。レッスン 76/78。
チャレンジ
中級organize_contactsという名前の関数を作成し、連絡先の辞書のリストを処理して、整理された連絡先データベースを作成してください。
入力リスト内の各連絡先辞書には、次のキーがあります。
name:人物の名前email:人物のメールアドレスphone:人物の電話番号
この関数では、次の処理を行ってください。
- 重複する連絡先(同じメールアドレスまたは電話番号を持つ連絡先)を削除し、最初に出現したものを残す
- すべてのメールアドレスを小文字に統一する
- 無効なメールアドレスを持つ連絡先を除外する
- 無効な電話番号を持つ連絡先を除外する
- cleanされた連絡先辞書のリストをReturnする
validationルール:
- validなメールアドレス:「@」と「.」を含み、スペースを含まないこと
- validな電話番号:正確に10桁の数字を含むこと(ハイフンや括弧などの数字以外の文字は無視する)
電話番号をcleanするには、Pythonのstr.isdigit()メソッドを使用して、電話番号から数字のみを抽出してください。このメソッドは、文字が数字(0-9)の場合にTrueを返し、それ以外の場合にFalseを返すため、数字以外の文字をfilterするのに最適です。
入力例:
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ロジックとフローのすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ