1. 딕셔너리 개요
1.1 딕셔너리란?
값을 위치(index)가 아니라, 이름(key)으로 관리하는 자료형이다.
다른 자료형과 다르게 순서가 아닌 '의미'로 데이터를 찾는다.
순서가 목적이 아닌, “무엇이냐”가 더 중요하다
딕셔너리는 키(key)과 값(value)의 쌍을 저정하며 값(value)은 뭐든 될 수 있다
•숫자
•문자열
•리스트
•튜플
•딕셔너리 조차 가능
핵심 키워드
• 키는 중복될 수 없음
• 값은 중복 가능
• 키는 변경 불가능한 자료형만 사용 가능
• 값은 모든 자료형 사용 가능
2. 딕셔너리 생성과 기본 사용법
2.1 딕셔너리 생성 방법
# {}를 사용하는 기본적인 딕셔너리 생성
student = {
'id': 12345,
'name': 'John Doe',
'grade': 'A'
}
# 키워드 인자를 사용한 생성
car = dict(brand='Ford', model='Mustang', year=1964)
print(car) # 출력: {'brand': 'Ford', 'model': 'Mustang', 'year': 1964}
# 리스트나 튜플의 리스트를 사용한 생성
items = [('apple', 2), ('banana', 3)]
fruit_dict = dict(items)
print(fruit_dict) # 출력: {'apple': 2, 'banana': 3}
3. 딕셔너리 요소 접근과 수정
3.1 요소 접근
딕셔너리는 키(key)를 이용해 값(value)에 접근한다.
리스트처럼 인덱스를 쓰지 않고, 의미 있는 키를 사용한다.
person = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# 키를 사용하여 값에 접근
print(person['name']) # 출력: Alice
print(person['age']) # 출력: 25
# `get()` 메서드를 사용하여 값에 접근 (키가 없을 때 기본값 설정 가능)
print(person.get('city')) # 출력: New York
print(person.get('country')) # 출력: None
print(person.get('country', 'USA')) # 출력: USA
dict[key] 방식
• 키가 반드시 존재해야 한다.
• 키가 없으면 KeyError 발생
• 값이 반드시 있어야 하는 경우에 사용
get() 메소드의 특징과 차이
• 키가 없어도 에러가 발생하지 않음
• 기본값을 지정할 수 있음
• 데이터 전처리 단계에서 안전하게 사용 가능
3.2 요소 변경
이미 존재하는 키에 새로운 값을 할당하면 값이 수정된다.
person['age'] = 26
print(person) # 출력: {'name': 'Alice', 'age': 26, 'city': 'New York'}
• 키는 그대로 유지
• 값만 변경
• 딕셔너리는 가변(mutable) 자료형이기 때문에 가능
3.3 요소 추가
존재하지 않는 키에 값을 할당하면 새로운 요소가 추가된다.
person['country'] = 'USA'
print(person) # 출력: {'name': 'Alice', 'age': 26, 'city': 'New York', 'country': 'USA'}
• 변경과 추가는 문법적으로 동일
• 키의 존재 여부에 따라 동작만 달라짐
3.4 요소 삭제
# `del` 키워드를 사용하여 요소 삭제
del person['city']
print(person) # 출력: {'name': 'Alice', 'age': 26, 'country': 'USA'}
# `pop()` 메서드를 사용하여 요소 삭제 및 값 반환
age = person.pop('age')
print(age) # 출력: 26
print(person) # 출력: {'name': 'Alice', 'country': 'USA'}
# 모든 요소 삭제
person.clear()
print(person) # 출력: {}
del 키워드
• 해당 키와 값을 완전히 제거
• 키가 없으면 KeyError 발생
pop() 메서드
• 요소를 삭제하면서 값을 반환
• 데이터 처리 중 값을 동시에 사용해야 할 때 유용
clear()
• 딕셔너리의 모든 요소 제거
• 빈 딕셔너리만 남김
4. 딕셔너리 메서드 (Dictionary Methods)
4.1 keys()
모든 키를 dict_keys 객체로 반환 ( 컬럼 목록 확인 느낌 )
person = {'name': 'Alice', 'age': 25, 'city': 'New York'}
keys = person.keys()
print(keys) # 출력: dict_keys(['name', 'age', 'city'])
4.2 values()
모든 값을 dict_values 객체로 반환 ( 실제 데이터들만 모아서 보기 )
person = {'name': 'Alice', 'age': 25, 'city': 'New York'}
keys = person.keys()
print(keys) # 출력: dict_keys(['name', 'age', 'city'])
4.3 items()
딕셔너리의 모든 (키, 값) 쌍을 튜플로 반환
items = person.items()
print(items) # 출력: dict_items([('name', 'Alice'), ('age', 25), ('city', 'New York')])
5. 딕셔너리와 반복문
키를 통한 반복: 키를 통해 값을 직접 조회하는 방식
for key in person:
print(key, person[key])
keys() 메소드를 통한 반복: 모든 키를 명시적으로 가져옴
for key in person.keys():
print(key)
values() 메소드를 통한 반복: 키는 필요 없고 값만 사용할 때 적합
for value in person.values():
print(value)
items() 메소드를 통한 반복: 키와 값을 동시에 다룰 때 가장 권장되는 방식
for key, value in person.items():
print(f'{key}: {value}')
6. 딕셔너리 컴프리헨션 (Dictionary Comprehension)
간결하고 효율적인 방법으로 새로운 딕셔너리를 생성하는 문법
6.1 기본 문법 구조
new_dict = {key_expression: value_expression for item in iterable}
• {} 중괄호 사용
• :를 기준으로 키와 값을 정의
• for 뒤에는 반복 가능한 객체가 옴
사용 예시
1부터 5까지의 숫자를 키로 하고, 그 제곱을 값으로 하는 딕셔너리 생성
squares = {x: x**2 for x in range(1, 6)}
print(squares) # 출력: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
• x → 키
• x**2 → 값
• range(1, 6)을 순회하며 자동으로 매핑
기존 딕셔너리에서 특정 조건에 맞는 요소만 필터링
original = {'apple': 2, 'banana': 3, 'cherry': 5, 'date': 4}
filtered = {k: v for k, v in original.items() if v % 2 == 0}
print(filtered) # 출력: {'apple': 2, 'date': 4}
• items()로 키와 값을 동시에 순회
• if 조건을 만족하는 요소만 포함
• 데이터 전처리에서 매우 자주 사용됨
7. 중첩 딕셔너리 (Nested Dictionary)
딕셔너리는 다른 딕셔너리를 값으로 가질 수 있다.
students = {
'student1': {'name': 'Alice', 'age': 25},
'student2': {'name': 'Bob', 'age': 22},
'student3': {'name': 'Charlie', 'age': 23}
}
# 특정 학생의 정보에 접근
print(students['student2']['name']) # 출력: Bob
8. 딕셔너리와 관련된 주요 함수 및 연산자
8.1 len()
딕셔너리의 키-값 쌍의 개수를 반환
person = {'name': 'Alice', 'age': 26, 'city': 'New York', 'country': 'USA'}
print(len(person)) # 출력: 4
8.2 in 연산자
딕셔너리에 특정 키가 존재하는지 확인
print('name' in person) # 출력: True
print('email' in person) # 출력: False
8.3 del 키워드
딕셔너리 자체를 삭제하거나 모든 요소를 삭제
del person['country'] # 특정 키-값 쌍 삭제
del person # 딕셔너리 전체 삭제
9. 딕셔너리의 응용
9.1. 키로 사용할 수 없는 자료형
# 다음 코드는 오류를 발생시킵니다.
my_dict = { [1, 2, 3]: 'Numbers' } # TypeError: unhashable type: 'list'
9.2 람다(lambda) 함수와 딕셔너리
# 같은 의미
square = lambda x: x * x # 람다
def square(x): return x * x # def
10. 딕셔너리와 JSON 데이터
10.1 JSON 구조의 기본 개념
딕셔너리는 JSON(JavaScript Object Notation) 데이터와 구조가 유사하여, 웹 프로그래밍에서 데이터를 주고받을 때 자주 사용된다.
(오픈/공공 데이터가 JSON 형태인 경우가 많아, 파이썬 딕셔너리 형태로 변환하여 처리하는 경우 다수)
import json
person = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# 딕셔너리를 JSON 문자열로 변환
json_str = json.dumps(person)
print(json_str)
# 출력: {"name": "Alice", "age": 25, "city": "New York"}
11. 오늘 학습한 내용 정리
- 딕셔너리의 구조와 특징
- 딕셔너리 생성 및 요소 조작 방법
- 메서드와 반복문 활용 방식
- 컴프리헨션과 중첩 딕셔너리 이해
- 키 설계의 중요성과 데이터 전처리 활용
- JSON 데이터와의 연결 관계
'G.파이썬 > 파이썬 기초 복습' 카테고리의 다른 글
| [Python] 함수와 모듈 (0) | 2026.01.15 |
|---|---|
| [Python] 자료형 STEP 2. 튜플 (0) | 2026.01.14 |
| [Python] 자료형 STEP 1. 리스트 (0) | 2026.01.13 |
| [Python] 조건문과 반복문 (0) | 2026.01.12 |
| [Python] 입출력과 변수형 (0) | 2026.01.12 |
