Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- 데이터
- 비트
- 디지털회로
- 디지털
- 병렬컴퓨팅
- 알고리즘
- 바이너리
- 배시쉘
- 컴퓨팅
- 컴퓨팅사고력
- 이진수
- 클라우드컴퓨팅
- 병렬처리
- Python
- 쉘스크립트
- 분산켬퓨팅
- 그리드컴퓨팅
- 2진수
- Python Programming
- 병렬연산
- 데이터구조
- 컴퓨터
- 선태구조
- 반복구조
- 분산컴퓨팅
- 회로
- 분산처리
- 순차구조
- 자료구조
- 아스키코드
Archives
- Today
- Total
데브로맨스
【 PYTHON 】 딕셔너리 - 이름표가 붙은 데이터 관리 본문
>반응형
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