이 튜토리얼에서는 파이썬에서 딕셔너리 컴프리헨션(Dictionary Comprehension)을 사용하는 방법을 알아봅니다. 이미 리스트 컴프리헨션에 익숙하다면 딕셔너리 컴프리헨션도 금방 익힐 수 있습니다.
딕셔너리 컴프리헨션의 기본 문법
딕셔너리를 만들려면 키(key): 값(value) 쌍이 필요합니다. 그렇다면 딕셔너리 컴프리헨션으로 이 키-값 쌍을 어떻게 생성할 수 있을까요? 다음은 딕셔너리 컴프리헨션의 일반적인 형태입니다.
{key: value for ___ in iterable}위 구문의 빈칸을 채워서 딕셔너리 컴프리헨션을 완성하면 됩니다. 채우는 방법은 다양한데, 지금부터 가장 많이 사용되는 방식들을 하나씩 살펴보겠습니다.
예제 1: 숫자를 키로, 제곱값을 값으로 생성하기
0부터 9까지의 숫자를 키로, 각 숫자의 제곱을 값으로 갖는 딕셔너리를 만들어 보겠습니다. 결과는 {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}과 같아야 합니다. 아래 코드를 확인하세요.
# 딕셔너리 생성
squares = {i: i ** 2 for i in range(10)}
# 딕셔너리 출력
print(squares)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}예제 2: 두 개의 리스트로 딕셔너리 만들기 (zip 활용)
컴프리헨션을 이용해 두 개의 리스트로부터 딕셔너리를 만들 수도 있습니다. 이때 zip() 메서드를 사용하면 두 리스트에서 병렬로 값을 가져올 수 있습니다. [1, 2, 3, 4, 5]와 ['a', 'b', 'c', 'd', 'e']라는 두 리스트로 딕셔너리를 생성하는 방법을 살펴보겠습니다.
# 키 리스트
keys = ['a', 'b', 'c', 'd', 'e']
# 값 리스트
values = [1, 2, 3, 4, 5]
# 위 리스트들로 딕셔너리 생성
dictionary = {key: value for (key, value) in zip(keys, values)}
# 딕셔너리 출력
print(dictionary)실행 결과
위 프로그램을 실행하면 다음과 같은 출력을 얻을 수 있습니다.
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}예제 3: enumerate로 인덱스를 키로 사용하기
단일 리스트에서 enumerate() 메서드를 활용하면 인덱스를 키로, 요소를 값으로 하는 딕셔너리를 손쉽게 생성할 수 있습니다. 실제 코드로 확인해 보겠습니다.
# 값 리스트
values = ['a', 'b', 'c', 'd', 'e']
# enumerate를 사용해 딕셔너리 생성
dictionary = {key: value for (key, value) in enumerate(values)}
# 딕셔너리 출력
print(dictionary)실행 결과
위 코드를 실행하면 다음과 같은 결과가 나타납니다.
{0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e'}마무리
딕셔너리 컴프리헨션은 상황에 맞게 유연하게 활용할 수 있는 강력한 기능입니다. 이를 완전히 익히는 가장 좋은 방법은 코드를 작성할 때마다 활용할 기회가 있는지 살펴보고 직접 적용해 보는 것입니다. 반복문보다 간결하고 가독성이 뛰어나므로, 키-값 쌍을 동적으로 생성해야 하는 경우라면 딕셔너리 컴프리헨션을 적극적으로 사용해 보세요. 튜토리얼에 대해 궁금한 점이 있다면 댓글로 남겨주세요.