Python

파이썬 자료구조: 딕셔너리 완전 정리

초코너무조코 2025. 11. 25. 22:40
728x90

리스트와 튜플이 “순서를 가진 데이터의 묶음”이었다면, 딕셔너리는 ‘이름(key)’과 ‘값(value)’을 묶어서 저장하는 자료구조다.

 

특정 값을 빠르게 찾거나, ‘이름:값’ 관계로 데이터를 명확하게 표현하고 싶을 때 가장 적합하다.


1. 표 데이터를 표현하는 가장 적합한 구조

다음과 같은 아이스크림 가격표가 있다고 하자.

아이스크림 가격
월드콘 2000
메로나 1000
스크류바 800

 

리스트로 표현하면 다음과 같다.

아이스크림 = ["월드콘", "메로나", "스크류바"]
가격 = [2000, 1000, 800]

 

하지만 이 방식은 단점이 있다.
예를 들어 2000이 어떤 아이스크림의 가격인지 바로 파악하기 어렵다.

딕셔너리를 사용하면 이 문제를 해결할 수 있다.


2. 딕셔너리 생성

딕셔너리는 { }로 묶으며, 각 원소는 key: value 형태로 표현한다.

아이스크림 = {
    "월드콘": 2000,
    "메로나": 1000,
    "스크류바": 800
}

 

< 특징 >

  • key는 중복될 수 없다
  • value는 어떤 자료형도 가능
  • key는 보통 문자열이나 숫자 사용
  • key: value 쌍을 여러 개 넣는 구조

3. 딕셔너리 인덱싱

리스트와 달리 딕셔너리는 순서가 없기 때문에 정수 인덱스를 쓸 수 없다.
대신 key로 접근해야 한다.

print(아이스크림["월드콘"])   # 2000

 

존재하지 않는 key를 사용하면 오류가 발생한다.

이를 방지하려면 get()을 사용한다.

print(아이스크림.get("월드콘"))   # 2000
print(아이스크림.get("바나나맛")) # None

 

None은 "값 없음"을 의미하는 파이썬의 독립된 자료형이다. (과거 변수 포스팅 참고)


4. 딕셔너리 수정

형식

딕셔너리[key] = 새로운 값

 

예시

아이스크림["월드콘"] = 2500

 

수정 과정

  • 2500이 메모리에 생성됨
  • "월드콘" key가 기존 value(2000) 대신 2500을 바인딩
  • 2000은 더 이상 참조되지 않기 때문에 삭제됨

5. 딕셔너리에 값 추가

비어 있는 딕셔너리를 만들고 key–value를 하나씩 추가할 수도 있다.

아이스크림 = {}

아이스크림["월드콘"] = 2000
아이스크림["메로나"] = 1000
아이스크림["스크류바"] = 800

특징

  • key가 없으면 새로운 데이터 삽입
  • key가 있으면 기존 값을 수정

즉 “추가”와 “수정”의 문법이 동일하다.


6. 딕셔너리 원소 삭제

삭제에는 del 키워드를 사용한다.

del 아이스크림["월드콘"]
print(아이스크림)

 

key는 딕셔너리 내부에서 유일하므로 key를 지정해 삭제한다.


7. 딕셔너리의 key와 value 얻기

딕셔너리에는 key만 필요할 때, value만 필요할 때가 있다.
이를 위해 다음 함수를 제공한다.

key 목록 얻기

아이스크림.keys()

value 목록 얻기

아이스크림.values()

 

문자 그대로 key 컬럼만, value 컬럼만 가져오는 기능이다.


8. 정리

딕셔너리는 다음과 같은 상황에서 특히 유용하다.

  • 값에 이름을 붙여 명확하게 저장하고 싶을 때
  • 어떤 값을 빠르게 찾고 싶을 때
  • 표 형태의 데이터를 구조적으로 저장하고 싶을 때

리스트가 “순서 기반” 자료구조라면,
딕셔너리는 “의미 기반(key-value)” 자료구조라고 할 수 있다.

 

728x90