파이썬에서 딕셔너리(dictionary)를 다루다 보면 특정 키(key)가 딕셔너리 안에 존재하는지 확인해야 하는 상황이 자주 발생합니다. 딕셔너리는 순서가 없는 요소들의 집합이기 때문에 리스트처럼 인덱스(위치)를 기반으로 값을 찾을 수 없습니다. 이를 위해 파이썬 표준 라이브러리는 has_key() 메서드를 제공하여 딕셔너리 내 키의 존재 여부를 손쉽게 확인할 수 있도록 지원합니다.
다만 주의할 점은, 이 메서드는 파이썬 2.x에서만 사용 가능하며 파이썬 3.x에서는 완전히 제거되었다는 것입니다. 파이썬 3 환경이라면 아래에서 소개하는 in 연산자를 사용해야 합니다.
has_key() 문법
has_key() 메서드의 기본 문법은 다음과 같습니다.
dict.has_key(KeyVal)
- KeyVal: 존재 여부를 확인하고자 하는 키 값
- 반환값: 키가 존재하면
True, 존재하지 않으면False
숫자형 키 사용하기
딕셔너리의 키가 숫자일 경우, has_key() 메서드에 숫자 값을 그대로 전달하여 확인할 수 있습니다.
예제 코드
Dict = { 1: 'python', 2: 'programming', 3: 'language' }
print("주어진 딕셔너리 : ")
print(Dict)
# has_key() 사용
print(Dict.has_key(1))
print(Dict.has_key(2))
print(Dict.has_key('python'))실행 결과
주어진 딕셔너리 :
{1: 'python', 2: 'programming', 3: 'language'}
True
True
False키 1과 2는 딕셔너리에 실제로 존재하므로 True가 반환되었고, 'python'은 키가 아니라 값(value)이므로 False가 반환된 점에 유의하세요. has_key()는 오직 키만을 대상으로 검사합니다.
문자열 키 사용하기
키가 문자열인 경우에는 따옴표로 감싼 문자열 값을 has_key() 메서드에 직접 전달하면 됩니다.
예제 코드
Dict = { 'A': 'Work', 'B': 'From', 'C': 'Home' }
print("주어진 딕셔너리 : ")
print(Dict)
# has_key() 사용
print(Dict.has_key('From'))
print(Dict.has_key('A'))실행 결과
주어진 딕셔너리 :
{'A': 'Work', 'C': 'Home', 'B': 'From'}
False
True'From'은 키가 아니라 값이므로 False, 키 'A'는 존재하므로 True가 출력됩니다.
파이썬 3에서의 대안: in 연산자
앞서 언급했듯이 has_key()는 파이썬 3.x에서 삭제되었습니다. 파이썬 3에서는 in 연산자를 사용하는 것이 공식적으로 권장되는 방식이며, 코드도 더 간결하고 가독성이 좋습니다.
Dict = { 'A': 'Work', 'B': 'From', 'C': 'Home' }
print('A' in Dict) # True
print('D' in Dict) # False
# 조건문에서 활용
if 'A' in Dict:
print("키 'A'가 존재합니다.")또한 dict.get() 메서드나 try-except 구문(KeyError 처리)을 활용하는 방법도 있으니, 상황에 맞게 선택하여 사용하시면 됩니다.