반응형
파이썬의 사전(Dictionary)은 키(Key)와 값(Value)의 쌍을 저장하는 매우 강력하고 유연한 내장 데이터 구조입니다. 순서가 없고(Python 3.7+부터는 삽입 순서 유지), 키를 통해 값을 빠르게 검색할 수 있는 특징을 가지고 있습니다.

1. 사전의 주요 특징
- 키-값 구조 (Key-Value): 데이터를 "키: 값" 형태로 저장합니다.
- 고유한 키 (Unique Keys): 키는 중복될 수 없습니다. 동일한 키로 값을 다시 저장하면 기존 값이 덮어씌워집니다.
- 변경 가능 (Mutable): 생성된 후에도 값을 추가, 수정, 삭제할 수 있습니다.
- 해시 가능한 키 (Hashable): 키는 변경 불가능한(Immutable) 데이터 타입(문자열, 숫자, 튜플 등)만 사용할 수 있습니다. 리스트는 키로 사용할 수 없습니다.
2. 사전 생성 및 기본 사용법
# 1. 빈 사전 생성
empty_dict = {}
empty_dict_alt = dict()
# 2. 데이터가 포함된 사전(Dictionary) 생성
user = {
"name": "koko",
"age": 18,
"role": "Software Engineer",
"skills": ["Python", "VBA", "Java"]
}
# 3. 값 조회
print(user["name"]) # 출력: koko
print(user.get("age")) # 출력: 18 (get 메서드 사용 권장: 키가 없어도 에러 대신 None 반환)
# 4. 값 추가 및 수정
user["location"] = "South Korea" # 새로운 키-값 추가
user["age"] = 30 # 기존 값 수정
# 5. 값 삭제
del user["role"] # 특정 키 삭제
removed_skill = user.pop("skills") # 삭제된 값을 반환받으며 삭제
파이썬의 사전(Dictionary)은 기본적으로 키(Key)를 통해서만 값을 검색할 수 있도록 설계되어 있습니다.
3. 유용한 사전(Dictionary) 메서드
| 메서드 | 설명 | 예시 |
| keys() | 모든 키를 뷰 객체로 반환 | user.keys() |
| values() | 모든 값을 뷰 객체로 반환 | user.values() |
| items() | 모든 키-값 쌍을 (키, 값) 튜플로 반환 | user.items() |
| update() | 다른 사전의 키-값 쌍을 병합 |
user.update({"status": "active"})
|
| clear() | 사전의 모든 데이터 삭제 | user.clear() |
4.사전(Dictionary)을 활용한 반복문 (Iteration)
사전(Dictionary)은 items() 메서드를 활용해 키와 값을 동시에 순회할 때 가장 유용합니다.
person = {"name": "홍길동", "age": 30, "city": "서울"}
# 키와 값 동시 순회
for key, value in person.items():
print(f"{key}: {value}")
# 키만 순회
for key in person.keys():
print(key)
5. 내부 동작 원리와 성능 (해시 테이블)
파이썬의 사전은 해시 테이블(Hash Table) 구조로 구현되어 있습니다.
- 키를 해시 함수(Hash Function)를 통해 고유한 값으로 변환한 뒤, 그 값을 인덱스로 사용하여 메모리에 직접 접근합니다.
- 이로 인해 데이터의 전체 개수와 상관없이 검색, 추가, 삭제 작업의 평균 시간이 매우 빠릅니다.
파이썬의 사전(Dictionary)은 기본적으로 키(Key)를 통해서만 값을 검색할 수 있도록 설계되어 있습니다. 따라서 값(Value)을 기준으로 특정 키를 찾거나, 조건에 맞는 데이터를 검색하려면 다음과 같은 우회 방법을 사용해야 합니다.
1. 값(Value)으로 키(Key) 검색하기
값이 유일하다면 리스트 내포(List Comprehension)나 반복문을 통해 값을 가진 키를 찾을 수 있습니다.
scores = {"김철수": 85, "이영희": 92, "박민수": 85}
# 값이 92인 키 찾기
found_key = [k for k, v in scores.items() if v == 92]
print(found_key) # 출력: ['이영희']
2. 조건 검색 (값이 여러 개인 경우)
특정 조건을 만족하는 모든 항목을 찾으려면 반복문을 사용해야 합니다.
# 85점 이상인 학생(키)들 찾기
passed_students = [k for k, v in scores.items() if v >= 85]
print(passed_students) # 출력: ['김철수', '이영희', '박민수']
📌 대안: 양방향 검색이 필요할 때
다른 자료구조 사용:
pandas의 DataFrame이나 데이터베이스, 또는 sqlite3 같은 내장 DB를 활용해 인덱싱(Indexing)을 걸어두는 것이 유리합니다.
반응형
'업무 자동화 > python' 카테고리의 다른 글
| 파이썬 학습] 폴더 이름 가져오기 (0) | 2026.08.05 |
|---|---|
| 분석.csv → 판단 프로그램 만들기 (0) | 2026.08.03 |
| 기본 데이터.csv → 분석 데이터로 계산 하기 (0) | 2026.08.03 |
| 특정 종목의 기본 데이터 가져오기 (0) | 2026.08.03 |
| 파이썬 학습] 리스트 활용 (0) | 2026.08.03 |