Menu

파이썬 딕셔너리: 생성, 접근, 갱신, 순회하기

딕셔너리는 파이썬의 키-값 조회 자료구조예요 — 기초를 벗어나면 끊임없이 꺼내 쓰게 되는 그 하나의 자료형입니다.

딕셔너리는 조회 테이블이에요

리스트는 위치로 인덱싱돼요. 딕셔너리는 — 보통 문자열이나 숫자 — 로 인덱싱되고, 각 키는 하나의 값에 매핑돼요. 이 한 가지 변화가 엄청난 범위의 프로그램을 열어줘요: 재고, 설정, JSON 페이로드, 사용자 프로필, 캐시 등등.

main.py
Output
Click Run to see the output here.

키와 값은 거의 뭐든 될 수 있어요. 키는 해시 가능해야 해요(그래서 숫자, 문자열, 튜플은 되지만 리스트나 다른 dict는 안 돼요). 값에는 제약이 없어요 — dict 안에 dict나 list를 비롯해 뭐든 담을 수 있습니다.

딕셔너리 만들기

여러 방법이 있고 각각 쓰임이 있어요:

main.py
Output
Click Run to see the output here.

값 읽기

두 가지 방법이 있고, 선택이 중요해요:

main.py
Output
Click Run to see the output here.

의도에 따라 고르세요:

  • 키가 반드시 있어야 할 때는 []. 없다면 그건 버그고, 큰 소리로 에러가 나길 원할 거예요.
  • "없음"이 정상적인 경우일 때는 .get(). try/except 없이도 기본값을 다룰 수 있어요.

추가, 갱신, 삭제

키에 할당하면 키가 생기거나 갱신돼요:

main.py
Output
Click Run to see the output here.

update()는 다른 dict나 쌍의 이터러블을 병합합니다:

main.py
Output
Click Run to see the output here.

overrides에 있는 겹치는 키가 settings의 값을 덮어써요.

키 존재 확인

in은 값이 아니라 키를 검사해요:

main.py
Output
Click Run to see the output here.

값을 검사하려면 user.values()를 써야 해요:

main.py
Output
Click Run to see the output here.

딕셔너리 순회하는 법

반복할 수 있는 뷰가 세 가지 있어요:

main.py
Output
Click Run to see the output here.

대부분의 경우 .items()를 꺼내 쓰게 돼요 — 바로 언패킹돼서 쓸 수 있는 쌍을 주니까요.

현대 파이썬(3.7+)에서 순회 순서는 삽입 순서와 같아요. dict는 "마법의 주머니"가 아니에요 — a, b, c 순으로 넣으면 그 순서로 반복돼요. 언어 수준의 보장이라 믿어도 됩니다.

딕셔너리 정렬하는 법

딕셔너리는 삽입 순서를 유지하니까, dict를 "정렬한다"는 건 사실 원하는 순서로 키를 삽입한 새 dict를 만든다는 뜻이에요:

main.py
Output
Click Run to see the output here.

sorted()가 쌍의 리스트를 돌려주고, 그걸 dict(...)로 감싸서 새 순서로 다시 dict를 만드는 거예요. 정렬된 쌍만 필요하고 dict는 필요 없다면, 바깥 dict() 호출은 빼세요.

두 딕셔너리 병합하는 법

Python 3.9+에서는 | 연산자가 있어요:

main.py
Output
Click Run to see the output here.

키 충돌이 있으면 오른쪽 dict의 값이 이겨요. .update()는 제자리 버전이고요. 예전 파이썬 버전에서는 {**defaults, **overrides}를 쓰세요.

setdefault 패턴

자주 있는 요구: "키가 있으면 그 값을 쓰고, 없으면 기본값을 설정한 뒤 쓴다."

main.py
Output
Click Run to see the output here.

아니면 collections.Counter를 쓰는 게 더 좋아요:

main.py
Output
Click Run to see the output here.

Counter는 개수 세기를 기본으로 하는 dict 하위 클래스예요. 등장 횟수를 세는 상황이라면 언제나 맞는 선택이에요.

딕셔너리 컴프리헨션

리스트 컴프리헨션과 같은 구조지만, dict를 만들어요:

main.py
Output
Click Run to see the output here.

규칙은 리스트 컴프리헨션과 같은데, 중괄호 사이에 key: value가 들어간다는 게 달라요.

dict는 JSON의 쌍둥이

파이썬 dict는 JSON 객체와 거의 완벽하게 대응돼요. 서로 변환하는 게 한 번의 호출이면 끝납니다:

main.py
Output
Click Run to see the output here.

그래서 웹 작업에서 dict가 어디에나 나타나요 — API 요청과 응답은 사실상 중간에 네트워크가 좀 낀 dict 조작이에요.

실용적인 예제

사용자 프로필을 다루는 작은 설정 같은 프로그램:

main.py
Output
Click Run to see the output here.

중첩 dict, 가변 값, 기본값과 함께 쓰는 .get() — 레코드 형태의 어떤 데이터에도 쓸 기본 도구 세트예요.

다음으로

리스트, 튜플, 집합, 딕셔너리. 이 네 개의 컬렉션을 손에 쥐면 초반에 만날 대부분의 데이터를 모델링할 수 있어요. 다음은 리스트 컴프리헨션을 배울 거예요 — 하나의 컬렉션을 다른 것으로 변환하는 파이썬의 간결한 방식입니다.

자주 묻는 질문

파이썬의 딕셔너리가 뭔가요?

딕셔너리는 키-값 쌍의 모음이에요. 위치가 아니라 키로 값을 찾아요 — prices[0]이 아니라 prices['apple']이죠. 읽고 쓰는 게 빠르고, 키는 유일해야 하며, 현대 파이썬에서는 삽입한 순서가 유지돼요.

파이썬 딕셔너리에 키를 어떻게 추가하나요?

그냥 할당하면 돼요: my_dict['new_key'] = 'new value'. 키가 이미 있으면 값이 덮어쓰기되고, 없으면 새로 추가돼요. "삽입"과 "갱신" 문법이 따로 없어요 — 같은 문법이에요.

dict[key]와 dict.get(key)는 뭐가 다른가요?

dict[key]는 키가 없으면 KeyError를 던져요. dict.get(key)는 대신 None(또는 지정한 기본값)을 돌려줍니다. 키가 없는 게 정상일 때는 .get()을, 없는 게 버그라면 [key]를 쓰세요.

Coddy로 코딩 배우기

시작하기