Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 튜플의 해시 값을 구하는 방법

Python 프로그래밍을 하다 보면 튜플(tuple)의 해시(hash) 값이 필요한 경우가 있습니다. 예를 들어, 숫자들이 담긴 튜플이 있을 때 이를 딕셔너리(dictionary)의 키로 사용하려면 해시 값이 반드시 필요합니다. 이번 글에서는 내장 함수인 hash()를 사용해 튜플의 해시 값을 구하는 방법을 알아보겠습니다.

hash() 함수란?

hash()는 Python에 기본으로 내장된 함수로, 정수(int), 실수(float), 문자열(string), 튜플(tuple)처럼 변경 불가능한(immutable) 자료형에 대해 고유한 해시 값을 반환합니다.

반면 리스트(list)는 해싱할 수 없습니다. 그 이유는 리스트가 가변(mutable) 자료형이기 때문입니다. 내용이 언제든 바뀔 수 있는 객체는 안정적인 해시 값을 유지할 수 없으므로, Python은 이러한 타입에 대해 hash() 호출 시 TypeError를 발생시킵니다.

이렇게 얻은 해시 값은 딕셔너리나 집합(set)에서 데이터를 빠르게 조회하고 매핑할 때 내부적으로 활용됩니다.

해결 접근 방식

  • 튜플을 입력으로 받습니다.
  • hash() 함수를 호출하고 튜플을 인자로 전달합니다: hash(tuple)
  • 반환된 해시 값을 출력합니다.

예제 코드

다음 예제를 통해 실제 동작을 확인해 보겠습니다.

def solve(t):
    return hash(t)

t = (2, 4, 5, 6, 7, 8)
print(solve(t))

입력

(2, 4, 5, 6, 7, 8)

출력

-6569923111468529526

정리

튜플은 불변 자료형이므로 hash() 함수를 통해 손쉽게 해시 값을 얻을 수 있습니다. 다만 주의할 점은, 실행 환경이나 세션마다 문자열 등 일부 객체의 해시 값이 달라질 수 있다는 것입니다(Python 3부터 문자열 해싱에는 무작위화가 적용됩니다). 따라서 해시 값 자체를 저장하거나 비교 목적으로 사용하기보다는, 딕셔너리 키처럼 Python이 내부적으로 관리하는 용도로 활용하는 것이 좋습니다.