Python TypeError: 해시할 수 없는 유형: 목록

Zeeshan Afridi 2023년6월21일
  1. Python의 TypeError: unhashable type: 'list'
  2. Python의 해시 함수
  3. Python에서 TypeError: unhashable type: 'list' 수정
Python TypeError: 해시할 수 없는 유형: 목록

이 기사에서는 TypeError: unhashable type: 'list'와 Python에서 이를 수정하는 방법에 대해 설명합니다.

Python의 TypeError: unhashable type: 'list'

이 오류는 목록과 같은 해시할 수 없는 객체를 Python 사전에 키로 전달하거나 함수의 해시 값을 찾을 때 발생합니다.

사전은 키-값 쌍으로 작동하는 Python의 데이터 구조이며 모든 키에는 그에 대한 값이 있으며 값의 값에 액세스하려면 배열 인덱스와 같은 키가 필요합니다.

사전 구문:

dic = {"key": "Values"}

해시 가능한 객체는 시간이 지나도 값이 변경되지 않지만 동일한 튜플로 유지되는 객체이며 문자열은 해시 가능한 객체 유형입니다.

암호:

# creating a dictionary
dic = {
    # list as a key --> Error because lists are immutable
    ["a", "b"]: [1, 2]
}

print(dic)

출력:

TypeError: unhashable type: 'list'

목록 ["a","b"]로 사용했지만 컴파일러에서 TypeError: unhashable type: 'list'가 발생했습니다.

목록의 해시 값을 수동으로 찾아봅시다.

암호:

lst = ["a", "b"]

hash_value = hash(lst)

print(hash_value)

출력:

TypeError: unhashable type: 'list'

hash() 함수는 주어진 객체의 해시 값을 찾는 데 사용되지만 객체는 string, tuple 등과 같이 변경할 수 없어야 합니다.

Python의 해시 함수

hash() 함수는 불변 개체를 암호화하고 개체의 해시 값으로 알려진 고유한 값을 할당하는 암호화 기술입니다. 데이터의 크기에 관계없이 동일한 크기의 고유한 값을 제공합니다.

암호:

string_val = "String Value"
tuple_val = (1, 2, 3, 4, 5)
msg = """Hey there!
              Welcome to DelfStack"""

print("Hash of a string object\t\t", hash(string_val))
print("Hash of a tuple object\t\t", hash(tuple_val))
print("Hash of a string message\t", hash(tuple_val))

출력:

Hash of a string object      -74188595
Hash of a tuple object       -1883319094
Hash of a string message     -1883319094

해시 값은 크기가 같고 모든 값에 대해 고유합니다.

Python에서 TypeError: unhashable type: 'list' 수정

Python에서 TypeError를 수정하려면 불변 객체를 사전의 키와 hash() 함수의 인수로 사용해야 합니다. 위의 코드에서 hash() 함수는 tuplestring과 같은 가변 개체와 완벽하게 작동합니다.

사전에서 TypeError: unhashable type: 'list'를 수정하는 방법을 살펴보겠습니다.

암호:

# creating a dictionary
dic = {
    # string as key
    "a": [1, 2]
}

print(dic)

출력:

{'a': [1, 2]}

이번에는 "a" 문자열을 키로 제공합니다. 문자열은 변경 가능하기 때문에 작업하기에 좋습니다.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

관련 문장 - Python Error

관련 문장 - Python TypeError