파이썬 교재 · 6편 / 27편

파이썬 딕셔너리 사용법

키-값 짝으로 데이터를 묶는 두 번째 자료구조. JSON·설정·DB 결과가 다 이 모양.

입문읽는 시간 7분2026-05-13
파이썬 REPL 에서 딕셔너리를 만들고 키로 조회하는 화면

학생 30명의 성적을 리스트에 넣으면 scores[3] 이 누구 점수인지 알 수가 없습니다. 이름과 점수가 짝이어야 의미가 생기죠. 그게 딕셔너리(dict) — 키(라벨) 와 값을 짝지어 묶는 자료구조입니다. 사용자 프로필·API 응답·설정 파일·환경 변수 — 파이썬에서 마주치는 데이터의 70% 가 이 모양입니다.

6편을 마치면 ① 딕셔너리 만들기와 키로 조회 ② 추가·수정·삭제 ③ get 으로 안전 조회 ④ keys·values·items 순회 ⑤ JSON 과의 거의 같은 관계 — 다섯 동작을 손에 익힙니다.

딕셔너리 만들기와 키로 조회

중괄호 { } 안에 키: 값 짝을 쉼표로. 키는 보통 문자열이지만 정수·튜플도 됩니다.

user = {
    "name": "준성",
    "age": 30,
    "role": "dev",
    "active": True
}

user["name"]      # '준성' — 키로 접근
user["age"]       # 30
user["height"]    # ❌ KeyError — 없는 키
len(user)         # 4 — 항목 수

리스트가 nums[3] 으로 위치를 가리킨다면, 딕셔너리는 user["name"] 으로 이름표를 가리킵니다. 순서가 아니라 의미로 접근한다는 차이가 핵심. 그래서 코드가 한결 읽힙니다 — row[2] 보다 row["age"] 가 의도가 명확하죠.

📌 키로 쓸 수 있는 것 / 못 쓰는 것

OK: 문자열·정수·실수·튜플·bool 같은 불변(immutable) 자료형. NG: 리스트·딕셔너리·집합 같은 가변 자료형. {[1,2]: "a"} 는 TypeError. 키는 한 번 정해지면 안 바뀐다는 보장이 필요하기 때문.

추가·수정·삭제

리스트와 다르게 같은 문법으로 추가·수정이 됩니다. 이미 있는 키면 덮어쓰고, 없는 키면 새로 만들어요.

user["email"] = "[email protected]"   # 새 키 추가
user["age"] = 31                     # 기존 값 수정

del user["active"]                   # 키 삭제
user.pop("role")                     # 키 제거하고 값 돌려줌 → 'dev'
user.pop("nope", "default")          # 없으면 기본값 반환 (KeyError X)

# 한 번에 여러 키 합치기 (3.9+)
extra = {"city": "서울", "lang": "ko"}
user |= extra                        # 또는 user.update(extra)

입력값 검증 없이 데이터를 합칠 때 |= 또는 update() 가 편합니다. 같은 키가 있으면 오른쪽 값이 이깁니다.

get 으로 안전한 조회 — KeyError 없이

없는 키를 user["nope"] 으로 부르면 KeyError 가 터집니다. 사용자 입력·API 응답처럼 키가 있을지 없을지 모르는 상황이 95% 거든요. 이때 get 메서드가 답.

user.get("name")              # '준성'  — 있으면 값
user.get("nope")              # None    — 없어도 에러 없음
user.get("nope", "미입력")     # '미입력' — 기본값 지정
user.get("age", 0) + 1        # 31 (없으면 0+1)

# 키 존재 여부만
"email" in user               # True/False

실무에서는 get(키, 기본값) 패턴이 80%. 사용자 폼 데이터에서 선택 입력 항목 처리, API 응답에서 누락 필드 방어, 설정 파일 기본값 — 모두 같은 패턴입니다.

⚠️ KeyError 방어 3가지 패턴.user.get(키, 기본값) — 가장 짧음. ② if 키 in user: ... — 명시적. ③ try/except KeyError — 12편에서. 입문자는 ①·②만 쓰세요. try 는 정말 예외 상황에만.

순회 — keys·values·items

딕셔너리를 통째로 돌면서 모든 항목을 처리할 때 세 가지 방법.

user = {"name": "준성", "age": 30, "role": "dev"}

# 1) 키만
for k in user:                # 또는 user.keys()
    print(k)
# name / age / role

# 2) 값만
for v in user.values():
    print(v)
# 준성 / 30 / dev

# 3) 키-값 한꺼번에 (가장 자주 씀)
for k, v in user.items():
    print(f"{k}: {v}")
# name: 준성
# age: 30
# role: dev

items() 가 가장 강력합니다. 키와 값을 동시에 두 변수에 풀어서 받는 걸 언패킹(unpacking)이라 부르고, 파이썬 곳곳에서 만납니다.

딕셔너리는 JSON 의 쌍둥이

웹 API 가 돌려주는 JSON 응답을 파이썬에서 받으면 거의 그대로 딕셔너리가 됩니다.

import json

s = '{"name": "준성", "age": 30, "skills": ["Python", "Linux"]}'
data = json.loads(s)         # str → dict
data["name"]                 # '준성'
data["skills"][0]            # 'Python' — 중첩도 자연스럽게

# 거꾸로
back = json.dumps(data, ensure_ascii=False)
# '{"name": "준성", "age": 30, ...}'

설정 파일·API 응답·로그 한 줄 — JSON 을 다루는 모든 파이썬 코드는 결국 dict 다루기입니다. 23편 웹 크롤링에서 이 연결이 가장 빛납니다.

마무리 — 자료구조 4총사가 모였다

지금까지 배운 자료구조를 정리해봅니다.

자료구조모양특징대표 용도
문자열 str"hello"불변·순서 있음텍스트
리스트 list[1, 2, 3]가변·순서 있음·인덱스여러 값 묶음
딕셔너리 dict{"k": "v"}가변·키-값·키로 접근의미 있는 데이터
(다음 편) 튜플(1, 2)불변·순서 있음못 바꾸는 묶음

다음 미션 — REPL 에서: ① 본인 프로필 dict 만들기(name·age·hobbies 리스트 포함) ② get 으로 없는 키 조회해보기 ③ items() 로 키-값 둘 다 한 줄씩 출력하기.

다음 편 미리보기

7편 — "파이썬 if 문": 조건 분기. 비교 연산자·논리 연산자·elif·들여쓰기 규칙. 자료구조까지 배운 다음 흐름 제어로.

📚 27편 파이썬 교재 시리즈 — 6/27편
← 5편 "리스트 사용법" · 다음: 7편 "if 문"

© 2026 주나이테크(주) @JUNAITECH