관리 메뉴

데브로맨스

【 PYTHON 】 딕셔너리 - 이름표가 붙은 데이터 관리 본문

>
카테고리 없음

【 PYTHON 】 딕셔너리 - 이름표가 붙은 데이터 관리

데브로맨스 2026. 1. 19. 21:16
반응형

Python 기초 문법 - 데이터 다루기

딕셔너리: 이름표가 붙은 데이터 관리

딕셔너리는 리스트보다 더 강력한 데이터 저장 방식입니다. 이름표가 달린 상자라고 생각하세요 - 각 항목에 고유한 이름(키)을 붙여서 데이터를 찾기 쉽습니다.

딕셔너리란 무엇인가?

딕셔너리(dictionary)는 "데이터의 라벨이 붙은 저장소"입니다. 실생활 예시로 사전이나 주소록을 생각해보세요.

주소부 = {
    "홍길동": "서울 강남구",  
    "유관순": "경기 남양주시",  
    "박찬호": "부산 해운대"    
}
특징 설명
키-값 쌍(key-value pair) 데이터 항목 = 이름("홍길동"), 값("서울 강남구")
순서 없음 Python 3.7 이후까지는 삽입 순서를 보장하지 않음
중복 불가 동일한 키는 마지막 값으로 덮어씀

![딕셔너리 구조 ASCII 다이어그램]

+---------------------+
|   Dictionary        |
|                     |
|  key1: value1       |
|  key2: value2       |
|  key3: value3       |
|                     |
+----------+----------+
           |
         저장소

딕셔너리 생성법

방법 1: 중괄호 사용

person = {
    "name": "Alice",         # 이름: 값 쌍
    "age": 30,              # 키는 따옴표로 감싸기
    "city": "Seoul"        
}

# 빈 딕셔너리 생성
empty_dict = {}

방법 2: dict() 함수 사용

data = dict(
    name="Bob",            
    age=25,                
    is_student=True        
)

# 리스트로 부터 생성 (튜플 형태 필요)
items = [["name", "Charlie"], ["age", 35]]
person_dict = dict(items)

데이터 접근과 수정

조회(값 가져오기)

# 값 получить
name = person["name"]       # "Alice" 반환
age = person["age"]         # 30 반환

# get() 메서드 (안전한 방법)
city = person.get("city", "Unknown")  # 기본값 설정 가능
non_existing = person.get("email", "Not found")

# 키 목록만 조회
keys_list = person.keys()   # dict_keys(['name', 'age', 'city'])

수정 및 추가

# 값 업데이트
person["age"] = 31          # 기존값 변경

# 새 항목 추가
person["email"] = "alice@example.com"

# 여러 항목 한 번에 업데이트
person.update({
    "age": 32,              
    "city": "Busan"        
})

삭제

# 특정 키 삭제
removed = person.pop("email")     # 삭제된 값 반환

# 마지막 항목 제거
last_item = person.popitem()      

# 모든 내용 비우기
person.clear()

실용적인 예제

학생 성적 관리 시스템

# 샘플 데이터 생성
students = {
    "student001": {"name": "민지", "math": 85, "korean": 92},
    "student002": {"name": "준호", "math": 78, "korean": 88},
    "student003": {"name": "서현", "math": 90, "korean": 95}
}

# 평균 계산 함수
def calculate_average(student_id):
    student = students.get(student_id)
    if not student:
        return None

    math_score = student.get("math")
    korean_score = student.get("korean")

    if math_score is None or korean_score is None:
        return None

    return (math_score + korean_score) / 2

# 결과 조회
average = calculate_average("student001")
print(f"민지 평균 점수: {average}")

키-값 동시 접근 기법

# items() 메서드 사용
user_data = {
    "username": "py_user",
    "email": "python@example.com",
    "role": "beginner"
}

for key, value in user_data.items():
    print(f"항목: {key}, 값: {value}")

# 조회 결과:
# 항목: username, 값: py_user
# 항목: email, 값: python@example.com  
# 항목: role, 값: beginner

리스트 vs 딕셔너리 비교

기능 리스트 딕셔너리
접근 속도 O(n) 시간복잡도 O(1) 시간복잡도
추천 사용처 순서가 중요한 데이터 검색이 빈번한 데이터
중복 허용 ✗ (키 중복 시 덮어씀)
데이터 조회 인덱스 필요 이름(키)으로 바로 접근
# 성능 차이 예시
large_list = [i for i in range(1000000)]
large_dict = {i: f"item_{i}" for i in range(1000000)}

# 리스트 조회 (순차 검색)
found_index = None
for i in range(len(large_list)):
    if large_list[i] == 999999:
        found_index = i
        break

# 딕셔너리 조회 (일대일 매칭)
found_value = large_dict.get(999999)

언제 딕셔너리를 사용해야 하나요?

  • 데이터 항목에 고유한 식별자가 있을 때
  • 특정 항목을 빠르게 찾고 싶을 때
  • 관련된 정보를 논리적 단위로 그룹화하고 싶을 때
  • JSON, CSV 등 실세계 데이터 구조와 매칭이 쉬울 때

다음 세트는 데이터 작업 시 거의 항상 함께 사용하는 필수 도구입니다!

반응형
Comments