키와 값으로 데이터를 관리하는 해시 테이블
해시 테이블(Hash Table)
은 우편번호로 주소를 찾는 것처럼, 키(Key)와 값(Value)의 쌍으로 데이터를 저장하는 자료구조입니다.
특정 데이터를 검색할 때 키를 이용해 값을 빠르게 찾을 수 있어 대용량의 데이터를 효율적으로 관리할 수 있습니다.
데이터를 저장할 떄는 해시 함수(Hash Function)
를 사용해 고유의 규칙에 따라 특정 숫자(해시 값)를 생성하고, 이 값을 이용해 데이터를 저장할 위치를 결정합니다.
해시 테이블은 어떻게 동작할까요?
해시 테이블은 키-값(key-value) 쌍을 저장하는 자료구조입니다.
해시 함수는 키를 입력받아 고유의 규칙에 따라 특정 숫자(해시 값)를 생성하고, 이 해시 값을 사용해 테이블에서 데이터를 저장할 위치를 결정합니다.
예를 들어 입력 받은 데이터의 길이를 해시 테이블의 크기로 나눈 나머지를 해시 값으로 사용할 수 있습니다.
def hash_function(key):
table_size = 10
# 데이터의 길이를 테이블 크기로 나눈 나머지를 해시 값으로 사용
return len(key) % table_size
예를 들어 "apple"
이라는 키를 해시 테이블의 크기가 10인 해시 함수에 넣으면, apple의 길이가 5이므로 5 % 10 = 5
가 해시 값으로 반환됩니다.
이렇게 반환된 해시 값에 따라, 해시 함수는 "apple"
이라는 키와 그에 해당하는 값을 해시 테이블의 5번째 위치에 저장합니다.
파이썬에서 해시 테이블 구현하기
파이썬에서는 리스트와 해시 함수를 이용해 간단한 해시 테이블을 구현할 수 있습니다.
class HashTable:
# 해시 테이블 초기화
def __init__(self, size):
self.size = size
self.table = [None] * size
# 키를 사이즈로 나눈 나머지를 해시 값으로 사용하는 해시 함수
def hash_function(self, key):
return hash(key) % self.size
# 키와 값을 해시 테이블에 저장
def insert(self, key, value):
index = self.hash_function(key)
self.table[index] = value
print(f"Key: {key} -> Index: {index}, Value: {value}가 테이블에 저장되었습니다.")
코드 설명
-
HashTable 클래스: 해시 테이블을 정의하는 클래스입니다.
__init__
메서드에서 해시 테이블의 크기를 설정하고, 그 크기만큼의 리스트를 생성합니다. -
hash_function 메서드: 파이썬의 내장
hash
함수를 이용해 키를 해시 값으로 변환하고, 이 값을 테이블 크기로 나눠 저장할 인덱스를 결정합니다. -
insert 메서드: 키와 값을 받아 해시 테이블에 저장합니다. 키를 해시 함수로 처리해 나온 인덱스에 값을 저장합니다.
-
search 메서드: 키를 이용해 해시 테이블에서 값을 검색합니다. 해당 키가 저장된 인덱스를 찾아 값을 반환합니다.
해시 테이블은 언제 사용되나요?
해시 테이블은 데이터를 빠르게 검색하고 저장할 수 있는 자료구조로, 대용량 데이터베이스나 캐시 등에서 사용됩니다.
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!