본문 바로가기
프로그래밍언어/파이썬[Error]

[파이썬][Error] 114. TypeError - unhashable type: 'list'

by about_IT 2025. 6. 1.
728x90

TypeError: unhashable type: 'list' 오류는 리스트 객체를 set이나 dict의 키로 사용하려고 할 때 발생합니다. 리스트는 가변(mutable) 객체이기 때문에 해시 불가능(unhashable)하며, 해시 기반 자료구조에서 키로 사용할 수 없습니다.

딕셔너리의 키나 집합(set)의 원소로 사용되는 객체는 반드시 불변(immutable)이어야 하며, 리스트는 내부 요소가 바뀔 수 있어 해시 값을 보장할 수 없습니다.

● 오류 발생 예시

my_dict = {}
key = [1, 2, 3]
my_dict[key] = "value"

위 코드에서 리스트 key는 가변 객체이므로 딕셔너리의 키로 사용할 수 없어 오류가 발생합니다.

● 주요 원인

  • 리스트를 딕셔너리의 키로 사용
  • 리스트를 set의 원소로 추가 시도
  • 가변 객체를 해시 기반 자료구조에 사용

● 해결 방법

  • 리스트 대신 튜플(tuple)을 사용 (튜플은 불변이므로 키로 사용 가능)
  • 딕셔너리 키, 집합 원소 등에는 항상 불변 자료형 사용
  • 리스트가 꼭 필요한 경우 문자열 등으로 변환하여 사용

● 예시 코드 (정상 처리)

my_dict = {}
key = (1, 2, 3)  # 튜플 사용
my_dict[key] = "value"
print(my_dict)

● 결론

파이썬에서 딕셔너리나 집합 등 해시 기반 자료구조를 사용할 때는 키 또는 원소가 불변 객체여야 합니다. list는 가변 객체이므로 이러한 용도로는 사용할 수 없으며, tuple 등으로 대체하는 것이 일반적인 해결 방법입니다.

728x90