Python컬렉션과 문자열

dict와 set comprehension

리스트 컴프리헨션을 넘어 딕셔너리와 집합을 한 줄로 구성하는 Python comprehension 확장 패턴입니다.

마지막 수정 2026년 3월 19일

기본 패턴

python
names = ["mina", "jin", "ara"]

name_lengths = {name: len(name) for name in names}
first_letters = {name[0] for name in names}

설명

  • comprehension은 리스트뿐 아니라 딕셔너리와 집합에도 적용할 수 있습니다.
  • 딕셔너리 comprehension은 key: value 형태를 한 번에 만들 때 유용합니다.
  • 집합 comprehension은 중복 없는 결과를 빠르게 만들 때 적합합니다.
  • 컬렉션 생성 규칙이 한 줄에 자연스럽게 담길 때 읽기와 수정이 모두 쉬워집니다.

짧은 예제

python
scores = {"mina": 90, "jin": 75, "ara": 88}

passed = {name: score for name, score in scores.items() if score >= 80}
grade_letters = {score // 10 for score in scores.values()}

빠른 정리

표현의미
{k: v for ...}딕셔너리 comprehension
{x for ...}집합 comprehension
if condition조건 필터
중복 제거집합 comprehension의 장점

공식 참고: Data Structures

주의할 점

comprehension은 간결하지만, 식이 너무 복잡해지면 오히려 읽기 어렵습니다. 중첩이 깊거나 조건이 길어지면 일반 for문으로 푸는 편이 더 명확할 수 있습니다.