PYTHON · 컬렉션
해시 테이블 구현
Python dict의 기반인 해시 테이블을 직접 구현하여 내부 동작 원리를 이해합니다.
컬렉션고급hash table해시 테이블자료구조dict
핵심 설명
Python dict의 기반인 해시 테이블을 직접 구현하여 내부 동작 원리를 이해합니다.
Python code
class HashTable:
def __init__(self, size=16):
self._size = size
self._buckets: list[list] = [[] for _ in range(size)]
self._count = 0
def _hash(self, key) -> int:
return hash(key) % self._size
def __setitem__(self, key, value):
bucket = self._buckets[self._hash(key)]
for i, (k, v) in enumerate(bucket):
if k == key:
bucket[i] = (key, value)
return
bucket.append((key, value))
self._count += 1
def __getitem__(self, key):
bucket = self._buckets[self._hash(key)]
for k, v in bucket:
if k == key:
return v
raise KeyError(key)
def __contains__(self, key):
try:
self[key]
return True
except KeyError:
return False
def __len__(self):
return self._count
ht = HashTable()
ht["name"] = "Alice"
ht["age"] = 30
ht["city"] = "서울"
print(ht["name"]) # Alice
print("age" in ht) # True
print(len(ht)) # 3학습 팁
실제 Python dict는 오픈 어드레싱(open addressing)을 사용하지만, 이 예제는 이해하기 쉬운 체이닝(chaining) 방식입니다.
주의할 점
해시 충돌이 많으면 O(1) → O(n)으로 성능이 저하됩니다. 적절한 해시 함수와 리사이징 전략이 필요합니다.
자주 묻는 질문
해시 테이블 구현란 무엇인가요?
Python dict의 기반인 해시 테이블을 직접 구현하여 내부 동작 원리를 이해합니다.
해시 테이블 구현 학습 시 주의할 점은 무엇인가요?
해시 충돌이 많으면 O(1) → O(n)으로 성능이 저하됩니다. 적절한 해시 함수와 리사이징 전략이 필요합니다.
Continue Learning
Python 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.