공부 정리/파이썬

딕셔너리 및 세트 컴프리헨션

cysk 2025. 10. 29. 20:44

리스트 컴프리헨션과 마찬가지로 for루프를 한줄로 축약하여 딕셔너리와 세트를 간결하게 생성하는 문법이다. 

 

1. 딕셔너리 컴프리헨션

딕셔너리의 {key : value}쌍을 for 루프를 통해 생성한다. 리스트 컴프리헨션과 유사하지만 콜론:을 사용하여 키와 값을 명시해야 한다.

 

new_dict = {key_expression: value_expression for item in iterable}

 

리스트를 딕셔너리로 변환

n_item = ['asd', 'asdf', 'asdfg']

# 각 이름(key)과 그 이름의 길이(value)를 매핑
item_lengths = {name: len(name) for name in n_item}

print(item_lengths)
출력: {'asd': 3, 'asdf': 4, 'asdfg': 5}

 

리스트 컴프리헨션과 같이 for 루프 뒤에 if를 추가하여 특정 조건을 만족하는 항목들만 딕셔너리로 구성할 수 있다. 

 

세트 컴프리헨션.

set을 간결하게 생성하는 방법으로 문법은 리스트 컴프리헨션과 거의 동일하나 []대신 {}를 쓴다. 

세트 컴프리헨션의 가장 큰 특징은 중복을 자동으로 제거한다는 것이다.

new_set = {expression for item in iterable}

 

제곱

numbers = [1, 2, 2, 3, 3, 3, 4]

# 각 숫자를 제곱하여 세트에 저장 중복은 자동 제거
unique_squares = {n**2 for n in numbers}

print(unique_squares)
출력: {1, 4, 9, 16}

 

핵심 차이점

딕셔너리 vs 세트는 콜론 :의 유무로 판별한다

- {k: v for } 딕셔너리

- {v for } 세트

코드에서 {}를 그냥 쓰면 파이썬은 이를 빈 딕셔너리로 해석한다. 그렇기에 빈 세트를 만들고 싶다면 컴프리핸션이 아니라 set()를 써야한다

a = {}
print(type(a)) # 출력: <class 'dict'>

b = set()
print(type(b)) # 출력: <class 'set'>