Menu

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

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

이 페이지에는 실행 가능한 에디터가 있습니다 — 편집하고 실행하면 결과를 바로 볼 수 있습니다.

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

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

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

딕셔너리 만들기

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

값 읽기

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

의도에 따라 고르세요:

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

추가, 갱신, 삭제

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

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

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

키 존재 확인

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

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

딕셔너리 순회하는 법

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

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

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

딕셔너리 정렬하는 법

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

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

두 딕셔너리 병합하는 법

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

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

setdefault 패턴

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

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

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

딕셔너리 컴프리헨션

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

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

dict는 JSON의 쌍둥이

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

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

실용적인 예제

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

중첩 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 programming languages illustration

Coddy로 코딩 배우기

시작하기