리스트 컴프리헨션과 마찬가지로 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'>'공부 정리 > 파이썬' 카테고리의 다른 글
| 정말 쉽고 편한 컨텍스트 관리자 Context Manager 기능 (0) | 2025.10.27 |
|---|---|
| 리스트 컴프리헨션 List Comprehension (0) | 2025.10.24 |