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

+ Recent posts