파이썬 해시 테이블 사용 방법
Python 해시 테이블 (Python Hashtable)
해시 테이블(Data Structure) 소개
- 해시 테이블 vs 딕셔너리
- 해시 테이블: 해시 함수를 사용한 배열
해시 함수 이해
- Python 내장 함수
hash()
분석 - Python
hash()
함수 상세 분석 - 해시 함수의 특성 확인
- 객체의 식별자와 해시 비교
- 사용자 정의 해시 함수 작성
TDD(Test-Driven Development)로 Python에서 해시 테이블 프로토타입 구현
- TDD에 대한 간단한 설명
- 사용자 정의 HashTable 클래스 정의
- Key-Value 쌍 추가
- Key로 Value 찾기
- Key-Value 쌍 삭제
- 기존 Key의 Value 업데이트
- Key-Value 쌍 가져오기
- 방어적 복사 사용하기
- Key와 Value 가져오기
- 해시 테이블의 길이 보고하기
- 해시 테이블을 이터러블하게 만들기
- 텍스트로 해시 테이블 표시하기
- 해시 테이블의 동등성 테스트하기
해시 코드 충돌 해결
- Linear Probing을 통해 충돌한 Key 찾기
- Linear Probing을 HashTable 클래스에 적용하기
- 해시 테이블 자동 리사이징하기
- 로드 팩터 계산하기
- Separate Chaining으로 충돌한 Key 분리하기
해시 테이블에 삽입 순서 유지하기
- 해시 가능한 Key 사용하기
- 해시 가능성과 불변성의 관계
- 해시-동일성 계약
마무리
Python 해시 테이블은 데이터 구조 중 하나로, 데이터베이스 테이블 인덱싱, 계산된 값 캐싱, 집합 구현 등 다양한 실제 문제를 해결하는 데 큰 도움이 됩니다. Python에서는 해시 테이블을 dict
라는 이름으로 사용하며, 이름 조회를 거의 즉시 할 수 있도록 도와줍니다.
물론 Python에는 이미 dict
라는 해시 테이블이 내장되어 있습니다. 그러나 해시 테이블이 어떻게 작동하는지 이해하는 것은 도움이 될 수 있습니다. 코딩 테스트에서도 직접 해시 테이블을 구현해야 할 수 있습니다. 이 튜토리얼에서는 Python에 해시 테이블이 없다는 가정하에 처음부터 해시 테이블을 구현하는 단계를 안내합니다. 이 과정에서 해시 테이블이 얼마나 빠른지 알 수 있도록 몇 가지 중요한 개념을 소개합니다.
또한 이 튜토리얼에서는 **테스트 주도 개발(Test-Driven Development, TDD)**에 대한 핵심 토론과 함께 단계별로 실제 해시 테이블을 만드는 방법을 실습합니다. TDD에 대한 사전 지식이 없어도 이해하는 데 문제가 없으며, 이미 알고 있다고 해도 지루하지 않을 것입니다.
이 튜토리얼에서 다루는 내용:
- 해시 테이블과 딕셔너리의 차이점
- Python에서 해시 테이블을 처음부터 구현하는 방법
- 해시 충돌 및 기타 문제 해결 방법
- 해시 함수의 원하는 특성
- Python의
hash()
함수 동작 원리