파이썬에서 딕셔너리(Dictionary)는 가장 널리 사용되는 컬렉션 데이터 타입 중 하나입니다. 딕셔너리는 키(Key)와 값(Value)의 쌍으로 구성되며, 키는 인덱싱이 가능하지만 값은 인덱싱되지 않습니다. 파이썬은 다양한 프로그램에서 딕셔너리를 손쉽게 활용할 수 있도록 여러 내장 함수를 제공하는데, 이번 글에서는 그중에서도 update(), has_key(), fromkeys() 세 가지 내장 메서드를 자세히 살펴보겠습니다.
1. update() – 딕셔너리 병합하기
update() 메서드는 두 번째 딕셔너리의 항목들을 첫 번째 딕셔너리에 병합하여 새로운 항목을 추가합니다. 만약 동일한 키가 이미 존재한다면, 해당 키의 값은 새로운 값으로 덮어쓰기 됩니다.
문법
dict1.update(dict2)
# dict1과 dict2는 입력 딕셔너리 두 개입니다.
아래 예제에서는 두 개의 딕셔너리를 사용합니다. 두 번째 딕셔너리가 첫 번째 딕셔너리에 추가되며, 병합 효과를 제대로 확인하려면 두 번째 딕셔너리의 키 이름이 첫 번째 것과 달라야 합니다.
예제
dict1 = {'Place': 'Delhi', 'distance': 137}
dict2 = {'Temp': 41}
dict1.update(dict2)
print(dict1)위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
{'Place': 'Delhi', 'distance': 137, 'Temp': 41}2. has_key() – 키 존재 여부 확인하기
has_key() 메서드는 특정 키가 딕셔너리에 존재하는지 여부를 확인합니다. 단, 이 메서드는 파이썬 2 전용 기능이며 파이썬 3에서는 제공되지 않습니다. 따라서 파이썬 3 환경에서는 대신 in 연산자를 사용해야 합니다.
문법
dict.has_key(key)
아래 예제에서는 주어진 딕셔너리에 특정 키가 존재하는지 확인해 봅니다.
예제
dict1 = {'Place': 'Delhi', 'distance': 137}
dict2 = {'Temp': 41}
print(dict1.has_key('Place'))
print(dict2.has_key('Place'))위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
True
False
참고: 파이썬 3에서의 대체 방법
파이썬 3에서는 in 연산자를 사용하여 동일한 결과를 얻을 수 있습니다.
print('Place' in dict1) # True
print('Place' in dict2) # False3. fromkeys() – 시퀀스를 딕셔너리로 변환하기
fromkeys() 메서드는 리스트, 튜플, 셋 등 시퀀스의 값들을 키로 하는 새로운 딕셔너리를 생성합니다. 선택적으로 값을 지정하면 해당 값이 모든 키에 공통으로 할당되며, 값을 지정하지 않으면 각 키의 기본값은 None이 됩니다.
문법
dict.fromkeys(seq[, value])
아래 예제에서는 시퀀스로부터 딕셔너리를 생성하고, 값을 지정하는 경우와 지정하지 않는 경우의 차이를 비교해 봅니다.
예제
seq = ['Distance', 'Temp', 'Humidity']
dict = dict.fromkeys(seq)
print(dict)
dict = dict.fromkeys(seq, 15)
print(dict)
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
{'Distance': None, 'Temp': None, 'Humidity': None}
{'Distance': 15, 'Temp': 15, 'Humidity': 15}마무리
지금까지 파이썬 딕셔너리의 세 가지 유용한 메서드를 알아보았습니다. update()는 딕셔너리를 병합할 때, has_key()(파이썬 2) 또는 in 연산자(파이썬 3)는 키 존재 여부를 확인할 때, fromkeys()는 시퀀스를 딕셔너리로 변환할 때 각각 활용할 수 있습니다. 이러한 메서드들을 잘 익혀두면 딕셔너리 관련 작업을 한층 더 효율적으로 처리할 수 있습니다.