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

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

by about_IT 2025. 6. 1.
728x90

TypeError: unhashable type: 'list' 오류는 리스트를 딕셔너리의 키나 set의 원소로 사용할 때 발생하는 오류입니다. 이는 리스트가 변경 가능한 자료형이기 때문에 해시값을 가질 수 없기 때문입니다.

해시 기반 자료구조(dict, set 등)는 내부적으로 객체의 해시값을 기반으로 동작하며, 이때 키로 사용되는 객체는 해시 가능해야 하고 변경 불가능해야 합니다. 리스트는 이러한 조건을 만족하지 않아 오류가 발생합니다.

● 오류 발생 예시

some_set = set()
some_set.add([1, 2, 3])

위 코드에서 set의 원소로 리스트를 추가하려고 했기 때문에 TypeError가 발생합니다.

● 주요 원인

  • 딕셔너리 키로 리스트를 사용
  • set에 리스트 추가
  • 가변 객체를 해시가 필요한 위치에 사용

● 해결 방법

  • 리스트 대신 튜플을 사용하여 키나 원소 지정
  • 가변 자료형은 해시 불가능하므로 변환 처리 필요
  • 데이터 구조 설계 시 불변 객체 사용을 우선 고려

● 예시 코드 (정상 처리)

some_set = set()
some_set.add((1, 2, 3))  # 튜플은 해시 가능

● 결론

파이썬에서는 딕셔너리 키나 set 원소로 사용할 경우, 반드시 변경 불가능한 객체를 사용해야 합니다. 리스트는 구조상 해시가 불가능하므로 tuple이나 frozenset 등으로 변경하여 사용해야 오류를 방지할 수 있습니다.

728x90