Python에서 핵심 자료구조 중 하나인 딕셔너리에 대해 다룹니다.
딕셔너리의 기초 문법부터 주요 메서드 및 기능까지 함께 살펴보겠습니다.
1. 딕셔너리 (Dictionary)
딕셔너리는 데이터를 Key-Value쌍으로 저장하며, 여러 값들을 효과적으로 관리할 수 있는 자료구조입니다.
Key
데이터를 식별할 수 있는 고유 값
Value
Key와 연결된 데이터
리스트 (List) vs 딕셔너리 (Dictionary)

딕셔너리 생성 및 기본 사용법
# 딕셔너리 생성
info = {"name": "Alice", "age": 25}
# 값 접근
print(info["name"]) # 출력: Alice
# 값 수정
info["age"] = 26
print(info["age"]) # 출력: 26
2. 딕셔너리 주요 메서드 및 기능
딕셔너리가 기본적으로 제공하는 몇 가지 유용한 메서드를 알아봅시다.
.keys(), .values(), .items()
딕셔너리에 포함되는 값들에 대한 직접적인 접근을 하는 메서드입니다.
info = {"name": "Alice", "age": 25}
print(info.keys()) # dict_keys(['name', 'age'])
print(info.values()) # dict_values(['Alice', 25])
print(info.items()) # dict_items([('name', 'Alice'), ('age', 25)])
.get()을 사용한 안전한 키 접근
키가 존재하지 않을 때 기본값을 반환하도록 설정합니다.
이를 통해 KeyError 예외를 방지하고, 안전하게 기본값(default)을 반환받아 프로그램의 안정성과 보안성을 높일 수 있습니다.
print(info.get("city", "Unknown")) # 출력: Unknown
- 찾고자 하는 key(city)가 있으면 값을 출력하고, 없으면 기본값(Unknown)을 출력합니다.
항목 추가/수정/삭제
각 값에 대한 데이터 관리를 키를 이용하여 처리할 수 있습니다.
info[“key”] = value # 값 수정
del info[“key”] # 값 삭제
in 키워드를 이용한 키 확인
특정 키가 딕셔너리에 존재하는지 확인할 수 있습니다.
if "name" in info:
print("Key exists!")
3. 딕셔너리 활용
딕셔너리 컴프리헨션 (Dictionary Comprehension)
딕셔너리를 빠르고 간결하게 생성할 수 있는 파이썬 만의 문법입니다.
# 리스트 데이터를 딕셔너리로 변환
students = [{"name": "Alice", "score": 85}, {"name": "Bob", "score": 90}]
scores = {s["name"]: s["score"] for s in students}
print(scores) # 출력: {'Alice': 85, 'Bob': 90}
이미 리스트라는 형태로 데이터가 존재하는데 딕셔너리로 변환하는 이유는 다음과 같습니다.
- 검색 속도: 키(key)를 알면 데이터의 양과 상관없이 즉시 값을 찾음
- 데이터 간의 관계(의미) 표현: 두 개 이상의 정보를 한 쌍으로 묶어 데이터의 관계를 명확히 정의
- 데이터 수정과 관리의 편리함: 리스트에서 인덱스 번호를 알아낼 필요없이 바로 접근 가능
데이터 분류와 집계
# 문자열에서 각 알파벳의 빈도수 세기
text = "hello world"
freq = {}
for char in text:
if char in freq:
freq[char] += 1
else:
freq[char] = 1
print(freq) # 출력: {'h': 1, 'e': 1, 'l': 3, 'o': 2, ...}
4. 딕셔너리 활용 패턴
문자열에서 각 문자 개수 세기
text = "hello world"
freq = {}
for char in text:
freq[char] = freq.get(char, 0) + 1
print(freq) # 출력: {'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1}
값 기준 정렬하기
scores = {"Alice": 85, "Bob": 90, "Charlie": 80}
# 딕셔너리를 값 기준으로 내림차순 정렬
sorted_scores = dict(sorted(scores.items(), key = lambda x: x[1], reverse = True))
print(sorted_scores)
# 출력: {'Bob': 90, 'Alice': 85, 'Charlie': 80}
두 배열의 공통 요소 찾기
# 배열 두 개
arr1 = [1, 2, 3, 4, 5]
arr2 = [3, 4, 5, 6, 7]
# 딕셔너리로 배열 1의 모든 값을 저장
map_dict = {x: True for x in arr1}
# 배열 2를 순회하며 공통 요소 찾아내기
common_elements = [x for x in arr2 if x in map_dict]
print(common_elements)
# 출력: [3, 4, 5]
Two Sum
합이 target이 되는 두 숫자의 인덱스를 찾는 전형적인 코딩 테스트 문제입니다.
내가 필요한 숫자(diff)가 이미 나온 적 있는지 확인하는 동시에 현재 숫자와 그 위치를 기록하는 방식입니다.
nums = [2, 7, 11, 15]
target = 9
num_dict = {}
for i, num in enumerate(nums):
diff = target - num
if diff in num_dict: # 이전에 봤던 숫자가 현재 값의 차이(diff)라면 인덱스 반환
print([num_dict[diff], i])
break
num_dict[num] = i
# 출력: [0, 1]'GDGoC > Python' 카테고리의 다른 글
| [Python] Algorithm #04: 완전탐색과 백트래킹 (0) | 2026.05.11 |
|---|---|
| [Python] Algorithm #03: 이분 탐색 (Binary Search) (0) | 2026.05.06 |
| [Python] Basic #03: 정렬 (1) | 2026.05.06 |
| [Python] Algorithm #02: 문자열 (0) | 2026.04.25 |
| [Python] Basic #02: 리스트와 문자열 활용 (0) | 2026.04.25 |