반응형
파이썬 튜플, 리스트 관련 TypeError 디버깅
파이썬 프로그래밍 중에 튜플, 리스트 자료형과 관련하여 발생가능한
대표적인 TypeError 두 가지에 대하여 원인과 대처법을 정리해보도록 하겠습니다.
TypeError: 'tuple' object does not support item assignment
튜플로 선언된 자료에 인덱싱을 통한 값 추가, 수정 등을 시도할 경우 발생하는 오류입니다.
t1 = (10, 20, 30)
t1[0] = 15 # TypeError: 'tuple' object does not support item assignment 발생
해당 오류가 발생한 경우, 인덱싱을 시도하려했던 자료의 type을 검사하여
혹시 튜플 자료형이 아니었는지에 대하여 확인해보시면 됩니다.
해결법은 리스트 등 수정 가능한 자료형으로 변환 후 값 추가, 수정을 재시도하시면 됩니다.
# 자료형 확인
t1 = (10, 20, 30)
print(type(t1)) # <class 'tuple'>
# 리스트 변환 후 수정
l1 = list(t1)
l1[0] = 15
print(l1) # [15, 20, 30]
TypeError: unhashable type: 'list'
리스트를 딕셔너리의 key로 사용하려 하거나 set 자료형의 원소로 취급하려는 경우에
발생할 수 있는 오류 메시지입니다.
# 두 선언 형태 모두 TypeError: unhashable type: 'list' 발생
d1 = {['a', 'b'] : 'c'}
s1 = set([['a', 'b'], 'c'])
이는 리스트가 가변 자료형이라서 발생하는 에러로
불변 자료형인 튜플 형태를 대신해서 사용해주시면 해결이 가능합니다.
# 두 선언 형태 모두 아래 형태로는 가능
d1 = {('a', 'b') : 'c'}
s1 = set([('a', 'b'), 'c'])
'Python > Debugging' 카테고리의 다른 글
파이토치에서 모델 학습이 되지 않는 경우 원인 정리(파라미터가 그대로인 경우) (2) | 2022.05.17 |
---|---|
파이토치 RuntimeError: grad can be implicitly created only for scalar outputs 해결법 (0) | 2022.04.23 |
파이토치 설치 과정 Solving environment 오류 해결 (0) | 2022.04.15 |