이번에는 딕셔너리 Dictionary 에 대해 알아보겠습니다!

파이썬을 다루면서 리스트만큼이나 정말 자주, 그리고 중요하게 쓰이는 자료구조가 바로 딕셔너리(Dictionary)입니다.
오늘은 딕셔너리의 핵심 특징부터 실무에서 자주 쓰이는 중요 함수까지 꼼꼼하게 알아보겠습니다.
(리스트랑 유사한 부분이 좀 있네요!)
1. 딕셔너리(Dictionary)의 핵심 특징
딕셔너리는 이름 그대로 '사전'처럼 '키(Key)'와 '값(Value)'이 한 쌍으로 묶여있는 자료구조입니다.
💡 실무 관점에서의 중요성: JSON과의 완벽한 호환
딕셔너리는 웹 개발이나 인공지능 분야에서 가장 널리 쓰이는 텍스트 기반 데이터 포맷인 JSON(JavaScript Object Notation)과 형태가 100% 동일하여 상호 변환이 매우 쉽습니다.
- 정형 데이터 (DB 데이터): 엑셀처럼 스키마와 데이터가 분리된 형태 (머신러닝, 관계형 DB에서 주로 사용)
- 비정형 데이터 (이미지, 사운드): 구조화되지 않은 날것의 데이터 (딥러닝에서 주로 사용)
- 반정형 데이터 (XML, JSON) 🌟: 스키마(Key)와 데이터(Value)가 합쳐진 형태입니다.
- 클라이언트와 서버 간의 통신(데이터 주고받기)이나, 이기종 간(서로 다른 플랫폼, OS, 언어) 소통 시 공통으로 이해할 수 있는 포맷입니다. 최근에는 LLM(거대 언어 모델)에게 프롬프트를 전송하거나 결과를 반환받을 때 JSON 포맷을 표준으로 사용하기 때문에 딕셔너리의 중요성이 더욱 커졌습니다.
📌 딕셔너리 구성 규칙
- 키(Key)와 값(Value)의 쌍으로 구성됩니다.
- 키는 고유(Unique)해야 합니다. (중복 불가)
- 값은 중복이 가능합니다.
- 키는 변하지 않는 타입(문자열, 정수, 튜플 등)만 가능하며, 주로 문자열(String)을 사용합니다.
- (추가 지식) 파이썬 3.7 버전부터는 딕셔너리도 데이터가 추가된 순서를 기억합니다. 하지만 여전히 순서(인덱스) 기반의 접근은 하지 않는 것이 원칙입니다.
2. 딕셔너리 생성하기
# 1. 빈 딕셔너리 생성 (나중에 데이터를 동적으로 추가할 때)
dics = dict()
print(dics, len(dics), type(dics))
# 결과: {} 0 <class 'dict'>
# 2. 생성과 동시에 멤버 추가
dics = {
'key1': 'value1',
'age': 20,
1: "키의 타입은 주로 문자열"
}
print(dics, len(dics), type(dics))
# 결과: {'key1': 'value1', 'age': 20, 1: '키의 타입은 주로 문자열'} 3 <class 'dict'>
3. 데이터 추가 및 수정하기
딕셔너리는 대괄호 [] 안에 키(Key)를 지정하여 데이터를 추가하거나 수정합니다.
- 추가: 기존에 없는 키를 입력하면 새로운 키-값 쌍이 추가됩니다.
- 수정: 기존에 존재하는 키를 입력하면 기존 값이 덮어씌워(수정) 집니다.
# [데이터 추가]
# 기존에 100이라는 키가 없었으므로 새로 추가됩니다.
# 💡 이 방식은 추후 데이터 분석(Pandas 등) 시 새로운 파생 변수(컬럼)를 생성하는 기본 스타일과 동일합니다!
dics[100] = 'hi'
print(dics)
# 결과: {'key1': 'value1', 'age': 20, 1: '키의 타입은 주로 문자열', 100: 'hi'}
# [데이터 수정]
# 기존에 1이라는 키가 존재하므로 값이 변경됩니다.
dics[1] = 'hello'
print(dics)
# 결과: {'key1': 'value1', 'age': 20, 1: 'hello', 100: 'hi'}
4. 데이터 인덱싱 (추출)과 안전한 접근법
딕셔너리에서 특정 값을 꺼내올 때는 리스트처럼 숫자가 아닌 '키(Key)'를 사용합니다.
# 기본적인 추출 방식
print(dics['age'])
# 결과: 20
# ⚠️ 주의: 존재하지 않는 키를 호출하면 KeyError가 발생하며 프로그램이 셧다운(종료) 됩니다.
# print(dics['age1']) # KeyError: 'age1' 발생!
💡 [Tip] 에러를 방지하는 우아한 방법: .get()
위와 같은 잠재적 오류를 방지하기 위해 실무에서는 .get() 함수를 훨씬 자주 사용합니다.
# 키가 존재하면 값을 반환
print(dics.get('age'))
# 결과: 20
# 키가 없으면 에러 대신 None을 반환하므로 프로그램이 멈추지 않고 대체 관리가 가능합니다.
print(dics.get('age1'))
# 결과: None
# (추가 지식) 키가 없을 때 반환할 기본값을 직접 설정할 수도 있습니다!
print(dics.get('age1', '나이 정보 없음'))
# 결과: 나이 정보 없음
참고: 딕셔너리는 키 기반으로 접근하기 때문에 구간을 자르는 슬라이싱(Slicing)은 지원하지 않습니다.
5. 실무에서 가장 많이 쓰는 핵심 함수 3가지
딕셔너리 안의 데이터들을 한 번에 모아서 확인하거나, 반복문(for)과 함께 사용할 때 필수적인 함수들입니다. (반환 형태는 리스트와 유사한 dict_keys, dict_values 형태입니다.)
# 1. keys() : 모든 키(Key)만 모아서 반환
print(dics.keys())
# 결과: dict_keys(['key1', 'age', 1, 100])
# 2. values() : 모든 값(Value)만 모아서 반환
print(dics.values())
# 결과: dict_values(['value1', 20, 'hello', 'hi'])
# 3. items() : 모든 키와 값을 (키, 값) 형태의 튜플로 묶어서 반환 🌟
print(dics.items())
# 결과: dict_items([('key1', 'value1'), ('age', 20), (1, 'hello'), (100, 'hi')])
💡 (추가 지식) items()와 for 반복문의 찰떡궁합!
실제 개발을 할 때는 딕셔너리의 데이터를 하나씩 꺼내어 처리하기 위해 아래와 같이 사용합니다.
for key, value in dics.items():
print(f"키: {key}, 값: {value}")
# 결과:
# 키: key1, 값: value1
# 키: age, 값: 20
# 키: 1, 값: hello
# 키: 100, 값: hi
6. 데이터 삭제하기 (del, clear)
필요 없는 키-값 쌍을 지우거나, 딕셔너리를 완전히 비워버릴 수 있습니다.
# 특정 멤버 하나만 삭제 (파이썬 내장 키워드 활용)
del dics['key1']
print(dics)
# 결과: {'age': 20, 1: 'hello', 100: 'hi'}
# 딕셔너리 내부 전체 비우기 (데이터를 담는 그릇만 남김)
dics.clear()
print(dics)
# 결과: {}
오늘의 한 마디
이 수업을 듣고 어떻게 취업을 할지가 고민이었다. 사실 아무것도 배운 것이 없으니 당연하다고 생각했지만 역시 인간은 쓸데 없는 걱정하는 것을 좋아한다. 후후 그래서 선생님에게 찾아가 이 짧은 과정으로 데이터 엔지니어가 될 수 있나요? 물어봤다.
선생님은 하루하루 잘 따라오고 잘 복습하라고 하셨다.
믿고 따르겠읍니다. 쿠쿸
'코딩 개발 > Python' 카테고리의 다른 글
| Python - 흐름제어, 조건식 (0) | 2026.07.12 |
|---|---|
| Python - 튜플 Tuple (생성, 인덱싱, 슬라이싱, 분해) (0) | 2026.07.11 |
| Python - 문자열 포매팅 (%, format, f-string) (0) | 2026.07.08 |
| Python - 문자열 처리 함수 (split(), join(), lower(), upper(), strip() 형제들, find(), index(), in, startwith, endswith, replace()) (0) | 2026.07.07 |
| Python - 데이터 추출 슬라이싱(Slicing) - 변수명[시작 인덱스 : 끝 인덱스 : step(간격, 기본값1, 생략가능) (0) | 2026.07.06 |