💬 TypeError: 'int' object is not subscriptable
흔하지만 당황스러운 이 에러,
대체 왜 뜨는 걸까요?
❗ 에러 메시지 예시
TypeError: 'int' object is not subscriptable
이 에러는 정수(int) 를 마치 리스트나 문자열처럼 인덱싱(슬라이싱) 하려 할 때 발생합니다.
🔍 원인: 정수는 인덱싱이 불가능한 타입
subscriptable이라는 말은 쉽게 말해 **[]로 접근이 가능한가?**를 뜻합니다.
예를 들어 리스트나 문자열은 인덱스로 접근이 가능하죠:
my_list = [10, 20, 30]
print(my_list[0]) # ✅ 가능
그런데 정수는?
num = 123
print(num[0]) # ❌ TypeError 발생
정수는 인덱싱할 수 없기 때문에 에러가 납니다.
🧪 자주 발생하는 실수
① 함수 결과를 잘못 다룰 때
def get_number():
return 123
result = get_number()
print(result[0]) # ❌ 리스트라고 착각하고 인덱싱 → 에러 발생
→ return 값이 리스트인지, 숫자인지 확인 필요!
② 타입이 바뀐 것을 인식 못할 때
data = {'score': 100}
score = data['score']
print(score[0]) # ❌ 숫자인데 인덱싱함
→ score는 숫자입니다. score[0]은 불가능하죠.
🛠️ 해결 방법
1. 값의 타입 확인하기
print(type(score)) # <class 'int'>
2. 필요한 타입으로 변환하거나 인덱싱하지 않기
- 리스트나 문자열처럼 다루고 싶다면 문자열로 변환
num = 123
num_str = str(num)
print(num_str[0]) # ✅ '1'
3. 함수나 변수 이름이 의도한 타입과 일치하는지 확인하기
✅ 마무리 정리
- TypeError: 'int' object is not subscriptable는
숫자를 리스트처럼 다뤄서 생기는 에러입니다. - []를 쓸 수 있는 자료형은 리스트, 문자열, 튜플 등이고
int, float, bool 등은 subscriptable하지 않아요. - 값을 확인하고, 슬라이싱하려면 적절한 타입으로 변환하세요.
📘 함께 보면 좋은 글
- 🔹 [에러 해결] KeyError – 존재하지 않는 키라고요?
https://datacodingschool.tistory.com/296 - 🔹 [에러 해결] ValueError: could not convert string to float – 왜 이런 에러가 날까?
https://datacodingschool.tistory.com/295
'IT' 카테고리의 다른 글
🔸 [에러 해결] SettingWithCopyWarning – 값은 바꿨는데 왜 경고가 뜨지? (0) | 2025.06.21 |
---|---|
[에러 해결] IndexError – 인덱스를 벗어났다고요? (0) | 2025.06.20 |
[에러 해결] KeyError – 존재하지 않는 키라고요? (0) | 2025.06.11 |
[에러 해결] ValueError: could not convert string to float – 왜 이런 에러가 날까? (0) | 2025.06.11 |
tmux란? 💻 (2) | 2024.01.27 |