[파이썬 문법] 해시 Hash 알고리즘이란?
Hash란?
key : value 형태의 자료구조
파이썬에서는 딕셔너리를 사용하여 구현할 수 있다
리스트과 달리 모든 데이터 타입으로 접근이 가능하며 시간단축에 효과적이다.
언제 써야할까?
1. String을 기반으로 정보를 기록하고 관리해야 될 때
예를 들어, 마라톤에 참가한 선수가 완주를 했는지 정보를 관리해야 할 때
선수 이름 : 완주 여부 => String Key : bool Value
2. 빠른 탐색이 필요할 때
리스트보다 해시가 빠르다. 시간단축해야하는 코테 문제에서 유용하다.
유용한 함수
1. 딕셔너리 선언
dict = {} # 빈 딕셔너리 선언
dict = {key:value}
2. 값 리턴
dict[key] # 해당 키에 대응하는 값 리턴, 없으면 keyError 발생
dict.get(key, x) # 해당 키에 대응하는 값 리턴, 없으면 x 리턴
3. 값 변경
dict[key1] = value1 # 딕셔너리에 키-값 추가, 이미 있는 값 변경도 가능
4. 키-값 삭제
del dict[key] # 해당 키-값 삭제, 없으면 keyError 발생
dict.pop(key,x) # 해당 키에 대응하는 값 리턴, 없으면 x 리턴
# get과 달리 dict에서 제거된다
5. 키만 또는 값만 따로 뽑기
dict..keys() # 키만
dict.values() # 값만
dict.items() # 둘 다
6. Iterate (for문 사용시)
for key in dict: # key로만 순회
for key, value in dict.items(): # key-value 동시 순회