스마트 연락처 관리자
Coddy Python 여정의 Logic & Flow 섹션에 포함된 레슨 — 78개 중 76번째.
챌린지
중급연락처 딕셔너리 리스트를 처리하여 깨끗한 연락처 데이터베이스를 만드는 organize_contacts라는 이름의 함수를 작성하세요.
입력 리스트의 각 연락처 딕셔너리는 다음과 같은 키를 가집니다:
name: 사람의 이름email: 사람의 이메일 주소phone: 사람의 전화번호
함수는 다음을 수행해야 합니다:
- 중복된 연락처(동일한 이메일 또는 전화번호를 가진 연락처)를 제거하고, 첫 번째로 나타나는 연락처만 유지합니다.
- 모든 이메일을 소문자로 표준화합니다.
- 유효하지 않은 이메일 주소를 가진 연락처를 걸러냅니다.
- 유효하지 않은 전화번호를 가진 연락처를 걸러냅니다.
- 정제된 연락처 딕셔너리 리스트를 반환합니다.
유효성 검사 규칙:
- 유효한 이메일:
'@'와'.'을 포함해야 하며, 공백이 없어야 합니다. - 유효한 전화번호: 정확히 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