Python의 해시 테이블 및 해시 맵
게시 됨: 2022-11-06데이터에 액세스하거나 저장하려면 여러 가지 방법이 필요합니다. 해시 테이블과 해시맵은 사전으로 알려진 내장 데이터 유형을 통해 파이썬에서 이것을 구현하는 가장 좋은 데이터 구조입니다.
데이터 구조의 Hashmap 또는 Hash 테이블은 키를 값 쌍에 매핑하고 삽입, 검색 또는 제거할 요소를 보유하는 인덱스 값을 계산하는 함수를 사용합니다. 이렇게 하면 데이터에 더 쉽고 빠르게 액세스할 수 있습니다. 해시 테이블은 일반적으로 키-값 쌍을 저장하고 키 생성을 위해 해시 함수를 사용합니다.
이 기사에서는 해시 테이블과 해시맵이 무엇이며 파이썬에서 어떻게 구현되는지 배울 것입니다.
경쟁자보다 우위를 확보하기 위해 데이터 과학을 배우십시오.
해시 테이블 또는 해시맵 파이썬이란 무엇입니까?
해시 테이블 또는 해시맵 Python은 인덱싱된 데이터 구조입니다. 해시 함수를 사용하여 슬롯 또는 버킷 배열에 대한 키를 사용하여 인덱스를 계산합니다. 해당 인덱스를 사용하여 값을 버킷에 매핑할 수 있으며 키는 변경할 수 없고 고유합니다.
해시맵은 보관하는 물건에 레이블이 붙은 서랍장과 비슷합니다. 예를 들어 해시맵은 이름과 성 등과 같은 사용자 정보를 버킷에 저장할 수 있습니다.

해시 함수는 해시맵 구현에 필수적입니다. 키를 사용하여 버킷 목록의 버킷 인덱스로 변환합니다. 이상적인 해싱은 모든 키에 대해 별도의 인덱스를 생성합니다. 그러나 충돌이 발생할 수 있음을 명심하십시오. 해싱으로 이미 존재하는 인덱스가 생성되면 목록을 다시 해싱하거나 추가하여 여러 값에 대한 버킷을 쉽게 사용할 수 있습니다. Python에서 해시 맵의 예는 사전입니다.
검색 최적화를 위해 데이터 구조를 사용자 정의하고 구축하는 방법을 배우기 위해 해시맵 구현을 자세히 살펴보겠습니다.
파이썬의 해시맵
해시맵에는 다음 기능이 포함됩니다.
- set_val(key, value): 이 함수는 키-값 쌍을 해시 맵에 삽입하는 데 사용됩니다. 해시 맵에 이미 기존 값이 있는 경우 값을 업데이트해야 합니다.
- get_val(key): 이 함수는 매핑된 지정된 키로 값을 반환하거나 이 맵에 키에 대한 매핑이 없는 경우 "레코드를 찾을 수 없음"을 반환합니다.
- delete_val(key): 해시맵에 키에 대한 매핑이 있는 경우 특정 키에 대한 매핑을 삭제합니다.
구현:-
클래스 해시 테이블:
# 주어진 크기의 빈 버킷 리스트 생성
def __init__(자체, 크기):
self.size = 크기
self.hash_table = self.create_buckets()
def create_buckets(자체):
범위(self.size) 내 _에 대해 [[] 반환]
# 해시 맵에 값 삽입
def set_val(자신, 키, 발):
# 키에서 인덱스 가져오기
# 해시 함수 사용
hashed_key = 해시(키) % 자체 크기
# 인덱스에 해당하는 버킷 가져오기
버킷 = self.hash_table[해시된_키]
found_key = 거짓
인덱스의 경우 enumerate(bucket)에 기록합니다.
record_key, record_val = 레코드
# 버킷에 동일한 키가 있는지 확인
# 삽입할 키
record_key == 키인 경우:
found_key = 참
부서지다
# 버킷에 삽입할 키와 동일한 키가 있는 경우,
# 키 값 업데이트
# 그렇지 않으면 새 키-값 쌍을 버킷에 추가합니다.
find_key인 경우:
버킷[인덱스] = (키, 발)
또 다른:
bucket.append((키, 발))
# 특정 키로 검색된 값을 반환
def get_val(자신, 키):
# 다음을 사용하여 키에서 인덱스를 가져옵니다.
# 해시 함수
hashed_key = 해시(키) % 자체 크기
# 인덱스에 해당하는 버킷 가져오기
버킷 = self.hash_table[해시된_키]
found_key = 거짓
인덱스의 경우 enumerate(bucket)에 기록합니다.
record_key, record_val = 레코드
# 버킷에 동일한 키가 있는지 확인
# 검색 중인 키
record_key == 키인 경우:
found_key = 참
부서지다
# 버킷이 검색 중인 키와 동일한 키를 가지고 있는 경우,
# 찾은 값을 반환
# 그렇지 않으면 발견된 레코드가 없음을 나타냅니다.
find_key인 경우:
반환 레코드_val
또 다른:
"기록을 찾을 수 없습니다" 반환
# 특정 키가 있는 값 제거
def delete_val(자신, 키):
# 다음을 사용하여 키에서 인덱스를 가져옵니다.
# 해시 함수
hashed_key = 해시(키) % 자체 크기
# 인덱스에 해당하는 버킷 가져오기
버킷 = self.hash_table[해시된_키]
found_key = 거짓
인덱스의 경우 enumerate(bucket)에 기록합니다.
record_key, record_val = 레코드
# 버킷에 동일한 키가 있는지 확인
# 삭제할 키
record_key == 키인 경우:
found_key = 참
부서지다
find_key인 경우:
버킷.팝(인덱스)
반품
# 해시 맵의 항목을 인쇄하려면
def __str__(자신):
반환 "".join(self.hash_table의 항목에 대한 str(item))
hash_table = HashTable(50)
# 일부 값 삽입
hash_table.set_val([email protected]', '일부 값')
인쇄(해시_테이블)
인쇄()
hash_table.set_val('[email protected]', '다른 값')
인쇄(해시_테이블)
인쇄()
# 키로 레코드 검색/액세스
print(hash_table.get_val('[email protected]'))
인쇄()
# 값을 삭제하거나 제거
hash_table.delete_val('[email protected]')
인쇄(해시_테이블)
산출:-
[][][][][][][][][][][][][][][][][][][][][] ([email protected]', '일부 값') ][][][][][][][][][][][][][][][][][][][][][][] [][][][]

[][][][][][][][][][][][][][][][][][][][][] ([email protected]', '일부 값') ][][][][][][('[email protected]', '일부 다른 값')][][][][][][][][][ ][][][][][][][][][][][][]
다른 가치
[][][][][][][][][][][][][][][][][][][][][] ([email protected]', '일부 값') ][][][][][][][][][][][][][][][][][][][][][][] [][][][]
미국 확인 - 데이터 과학 프로그램
데이터 과학 및 비즈니스 분석 전문 인증 프로그램 | 데이터 과학 석사 | 데이터 과학 석사 | 데이터 과학 고급 인증 프로그램 |
데이터 과학의 이그 제 큐 티브 PG 프로그램 | 파이썬 프로그래밍 부트캠프 | 비즈니스 의사 결정을 위한 데이터 과학 전문 인증 프로그램 | 데이터 과학 고급 프로그램 |
사전을 사용하여 해시 테이블에 대한 작업 수행:
사전을 통해 해시 테이블에서 Python에서 수행할 수 있는 수많은 작업이 있습니다. 그것들은 다음과 같습니다:-
- 값 액세스
- 값 업데이트
- 요소 삭제
값 액세스:
다음과 같은 방법으로 사전 값에 쉽게 액세스할 수 있습니다.
- 키 값 사용
- 기능 사용
- for 루프 구현
키 값 사용:
다음과 같은 키 값을 사용하여 사전 값에 액세스할 수 있습니다.
my_dict={'엘사' : '001' , '안나': '002' , '올라프': '003'} my_dict['안나'] |
출력: '002'
기능 사용:
get(), keys(), values() 등과 같은 수많은 내장 함수가 있습니다.
my_dict={'엘사' : '001' , '안나': '002' , '올라프': '003'} 인쇄(my_dict.keys()) 인쇄(my_dict.values()) print(my_dict.get('엘사')) |
산출:-
dict_keys(['엘사', '안나', '올라프'])
dict_values(['001', '002', '003'])
001
for 루프 구현:
루프를 통해 사전의 키-값 쌍을 반복하여 액세스할 수 있습니다. 예를 들어:
my_dict={'엘사' : '001' , '안나': '002' , '올라프': '003'} print("모든 키") my_dict의 x에 대해: print(x) #키 출력 print("모든 값") my_dict.values()의 x에 대해: print(x) #값을 출력 print("모든 키와 값") my_dict.items()의 x,y에 대해: print(x, ":" , y) #키와 값을 출력 |
산출:
모든 키
엘사
안나
올라프
모든 값
001
002
003
모든 키와 값
엘사: 001
안나 : 002
올라프: 003

값 업데이트:
사전은 필요할 때 업데이트할 수 있는 변경 가능한 데이터 유형입니다. 다음과 같이 할 수 있습니다.
my_dict={'엘사' : '001' , '안나': '002' , '올라프': '003'} my_dict['Olaf'] = '004' #Dave의 값 업데이트 중 my_dict['Kristoff'] = '005' #키-값 쌍 추가 인쇄(my_dict) |
출력 : {'엘사': '001' , '안나': '002' , '올라프': '004', '크리스토프': '005'}
사전에서 항목 삭제:
del(), pop(), popitem(), clear() 등과 같은 함수를 사용하여 사전에서 항목을 삭제할 수 있습니다 . 예:
my_dict={'엘사' : '001' , '안나': '002' , '올라프': '003'} del my_dict['Elsa'] #'Elsa'의 키-값 쌍을 제거합니다. my_dict.pop('Anna') #'Anna' 값을 제거합니다. my_dict.popitem() #마지막으로 삽입된 항목을 제거합니다. 인쇄(my_dict) |
출력 : {'올라프': '003'}
결론
해시맵과 해시 테이블 Python은 관련 데이터에 더 쉽고 빠르게 액세스할 수 있는 필수 요소라는 결론을 쉽게 내릴 수 있습니다. 데이터 과학자 및 데이터 분석가와 같은 데이터 과학 전문가에게 유용한 도구입니다. 데이터 과학 분야에 대해 더 자세히 알고 싶다면 upGrad는 비즈니스 의사 결정을 위한 데이터 과학 분야 최고의 전문가 인증 프로그램을 보유하고 있습니다 .
해시맵(Python)이란 무엇이며, 해시 테이블(Python)은 무엇입니까?
해시 테이블은 해시 함수를 사용하여 키가 생성되는 키-값 쌍을 저장하는 데 도움이 됩니다. Python의 해시맵 또는 해시 테이블 구현은 내장 사전으로 수행됩니다.
해시맵과 해시 테이블 Python의 차이점은 무엇입니까?
Hashmap은 동기화되지 않지만 Hashtable은 동기화됩니다. 즉, 해시 테이블은 스레드로부터 안전하고 여러 스레드 간에 공유할 수 있지만 HashMap은 공유되기 전에 적절한 동기화가 필요합니다.
지도는 해시 테이블입니까?
해시 맵이라고도 하는 해시 테이블 Python은 키를 값에 매핑하는 데이터 구조입니다. 해싱 기법을 사용합니다.