콘텐츠로 건너뛰기

파이썬 해시 테이블 사용 방법

[

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() 함수 동작 원리