딕셔너리 (Dictionary)
요약
Python 딕셔너리 생성·접근·메서드(items/values/get)·빈도 카운팅·컴프리헨션까지. 정보처리기사 실기에 출제되는 딕셔너리 핵심 개념을 정리합니다.
딕셔너리 핵심 정리
| 개념 | 설명 | 예시 |
|---|---|---|
| 딕셔너리 생성 | 키-값 쌍으로 데이터 저장 | d = {"a": 1, "b": 2} |
| 딕셔너리 접근 | 키를 사용하여 값 조회 | d["a"] → 1 |
| keys / values / items | 키·값·쌍을 차례대로 꺼내기 | d.items() → [('a',1), ...] |
| get(key, default) | 키가 없으면 기본값 반환 | d.get("x", 0) → 0 |
| sum / len | 값의 합과 항목 수 집계 | sum(d.values()), len(d) |
| 딕셔너리 컴프리헨션 | 반복문으로 딕셔너리 생성 | {i: i*2 for i in lst} |
딕셔너리 기초 쌩기초
딕셔너리(Dictionary) 는 키(key)와 값(value)의 쌍으로 데이터를 저장하는 자료구조입니다. 키를 통해 값에 빠르게 접근할 수 있습니다.
딕셔너리 생성
딕셔너리 접근 및 수정
키 목록과 값 목록 조회
enumerate()를 활용하면 반복문에서 인덱스와 값을 동시에 얻을 수 있습니다.
딕셔너리 메서드로 순회하기 기초
keys()·values()·items()는 각각 키만, 값만, 키와 값 쌍을 하나씩 꺼내주는 메서드입니다. for문과 결합하면 딕셔너리 전체를 훑으면서 작업을 할 수 있습니다.
items()의 결과는 (키, 값) 튜플 묶음입니다. for k, v in d.items()처럼 두 변수로 받으면 튜플이 자동으로 분해되어 k에는 키, v에는 값이 들어갑니다.
sum(d.values()) — 값의 합 집계
sum()은 이터러블의 모든 값을 더해주는 내장 함수입니다. values()가 값만 꺼내주므로 sum(d.values()) 하나로 딕셔너리 전체 값의 합계를 구할 수 있습니다.
| 표현식 | 꺼내는 값 | 결과 |
|---|---|---|
sum(d.values()) | 값만 | 값 전체의 합 |
sum(d.keys()) | 키만 (숫자 키일 때) | 키 전체의 합 |
len(d) | — | 키-값 쌍의 개수 |
get(key, default) — 키가 없을 때 기본값 반환 기초
딕셔너리에서 값을 꺼낼 때 d["x"]처럼 대괄호로 접근하면 키가 없을 경우 KeyError가 발생합니다. get() 메서드는 키가 있으면 값을, 없으면 미리 정해 둔 기본값을 돌려줍니다.
| 접근 방식 | 키 있을 때 | 키 없을 때 |
|---|---|---|
d[key] | 값 반환 | KeyError 발생 |
d.get(key) | 값 반환 | None 반환 |
d.get(key, default) | 값 반환 | default 반환 |
빈도수 카운팅 패턴
get(key, default)의 가장 큰 쓰임새는 빈도수 카운팅입니다. 문자열이나 리스트를 순회하며 각 요소가 몇 번 등장하는지 세는 패턴에서, d[key] = d.get(key, 0) + 1 한 줄로 "처음 본 키는 0에서 시작, 이미 본 키는 기존 값에 +1"을 표현할 수 있습니다.
한 줄씩 풀어 보면 다음과 같습니다.
| 반복 | ch | freq.get(ch, 0) | freq[ch] = ... 이후 freq |
|---|---|---|---|
| 1 | b | 0 (없음) | {'b': 1} |
| 2 | a | 0 (없음) | {'b': 1, 'a': 1} |
| 3 | n | 0 (없음) | {'b': 1, 'a': 1, 'n': 1} |
| 4 | a | 1 | {'b': 1, 'a': 2, 'n': 1} |
| 5 | n | 1 | {'b': 1, 'a': 2, 'n': 2} |
| 6 | a | 2 | {'b': 1, 'a': 3, 'n': 2} |
get이 없다면 "키가 있으면 +1, 없으면 1로 초기화" 두 가지 경우를 if-else로 나누어 써야 합니다. get(ch, 0) 덕분에 첫 등장도 초기값 0에서 출발하므로 분기 없이 한 줄로 끝납니다.
빈도 + 집계 결합
빈도 딕셔너리를 만든 뒤 sum(d.values())로 전체 글자 수를, len(d)로 서로 다른 글자의 종류 수를 한꺼번에 구할 수 있습니다.
딕셔너리 컴프리헨션 기초
딕셔너리 컴프리헨션 은 반복문과 조건식을 사용하여 딕셔너리를 한 줄로 생성하는 문법입니다. 기본 형식·예시·조건 필터링, 그리고 리스트·집합·제너레이터 컴프리헨션과의 비교(같은 중괄호도 콜론 유무로 딕셔너리·집합이 갈리는 포인트)는 컴프리헨션 통합 정리 페이지에서 한 자리에 정리합니다.