
Are you getting a “TypeError: ‘type’ object is not subscriptable” error in Python?
Let’s say that you’re getting an error from this code, “emptylist += str[strlength – 1]”.
If so, the error is caused by this part of the code, “str[strlength – 1]”.
In this guide, you’ll learn how to fix “TypeError: ‘type’ object is not subscriptable” in Python, Pandas, or in a loop.
How to Fix “TypeError: ‘type’ object is not subscriptable”
name1 = "tom" # Index values of [0,1,2]
emptylist =[]
strlength = len(name1) # Returns length of three
while strlength > 0:
emptylist += str[strlength - 1] #Last index value of the variable "name1"
strlength = strlength - 1
print(emptylist)
Fix: The “str” in “str[strlength – 1]” needs to be replaced with the variable name at the start (“name1”).
Replace “str” with “name1”.
After (correct):
name1 = "tom" # Index values of [0,1,2]
emptylist =[]
strlength = len(name1) # Returns length of three
while strlength > 0:
emptylist += name1[strlength - 1] #Last index value of the variable "name1"
strlength = strlength - 1
print(emptylist)
In this scenario, the “str” in “str[strlength – 1]” code is wrong.
The code has a variable called “name1” and “Tom”.
Do note that the length of the string may be 3, but that goes from 1 to 3.
It doesn’t equate to the index but it just creates the length.
In the code, you’re saying that while the string length is greater than 0, do the next two lines.
The “+=” is basically when each time it’s iterating, it’s just adding the variable that it finds into the list.
And the next thing is “str” which has box brackets and not the normal brackets.
However, it’s going back one step because it’s starting at “-1”.
The reason for that is you have to go back one step to bring it back to the index value of two.
And as it loops through this then, it goes back to the index value of 1 and goes back to the index value of 0.
To fix this, you need to replace “str” with the variable name at the start (“name1”).
Further reading
How to Fix “Object of Type ‘int’ has no len()”
How to Fix “python: can’t open file ‘manage.py’: [Errno 2] No such file or directory”