PHpullh
학습 라이브러리/Python/해시 테이블 구현

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 메타데이터를 가집니다.