콘텐츠로 건너뛰기

파이썬 해시 테이블의 사용법과 고치는 방법은? (How to Use/Fix Python Hash Table?)

[

Python 해시 테이블로 해시 테이블 구현하기

바르토쉬 자진스키(Bartosz Zaczyński) 데이터 구조 중급

목차

  • 해시 테이블 데이터 구조 소개
    • 해시 테이블 vs 딕셔너리
    • 해시 테이블: 해시 함수를 이용한 배열
  • 해시 함수 이해하기
    • 파이썬의 내장 hash() 함수 살펴보기
    • 파이썬의 hash() 함수 깊이 알아보기
    • 해시 함수의 특성 알아보기
    • 객체의 식별값과 해시값 비교하기
    • 직접 해시 함수 만들기
  • TDD를 이용해 파이썬으로 해시 테이블 프로토타입 만들기
    • Test-Driven Development에 대한 간단한 소개
    • 사용자 정의 HashTable 클래스 정의하기
    • 키-값 쌍 추가하기
    • 키로 값 찾기
    • 키-값 쌍 삭제하기
    • 기존 키에 대한 값 업데이트하기
    • 키-값 쌍 얻기
    • 방어적 복사 사용하기
    • 키와 값 얻기
    • 해시 테이블의 길이 보고하기
    • 해시 테이블에 반복 가능한 기능 추가하기
    • 텍스트로 해시 테이블 출력하기
    • 해시 테이블의 동등성 테스트하기
  • 해시 코드 충돌 해결하기
    • 선형 탐사법을 통해 충돌된 키 찾기
    • HashTable 클래스에서 선형 탐사법 사용하기
    • 해시 테이블 자동 크기 조정하기
    • 로드 팩터 계산하기
    • 분리 연결을 사용해 충돌된 키 분리하기
  • 해시 테이블에서 삽입 순서 유지하기
  • 해시 가능한 키 사용하기
    • 해시 가능성 vs 불변성
    • 해시-등가(Hash-Equal) 계약
  • 결론

광고 제거하기

Python에는 dict라는 자체 해시 테이블이 있으나, 해시 테이블이 어떻게 작동하는지 이해하는 것은 도움이 될 수 있습니다. 코딩 과제에서 해시 테이블을 구현하라는 요구 사항도 있을 수 있습니다. 이 튜토리얼에서는 Python에 해시 테이블이 없을 때처럼 처음부터 해시 테이블을 구현하는 방법을 단계별로 안내하겠습니다. 이 과정에서 몇 가지 도전 과제를 마주하게 되며, 이를 통해 중요한 개념을 소개하고, 왜 해시 테이블이 이렇게 빠른지에 대한 개념을 갖게 될 것입니다.

또한, 이 과정에서 **테스트 주도 개발 (TDD)**에 대한 실전 스킬을 손에 넣게 되고, 해시 테이블을 단계적으로 구축하는 동안 TDD를 실제로 연습해볼 수 있습니다. 당연히 TDD에 대한 사전 지식이 없어도 상관 없지만, 이미 알고 있다면 지루하지도 않을 겁니다!

이 튜토리얼에서 배울 내용:

  • 해시 테이블딕셔너리의 차이점
  • Python에서 해시 테이블을 직접 구현하는 방법
  • 해시 충돌과 기타 도전과제 다루는 방법
  • 해시 함수의 원하는 속성
  • Python의 hash() 함수의 내부 동작 방식