Question

What does unsubscriptable mean in the context of a TypeError as in:

TypeError: 'int' object is unsubscriptable

EDIT: Short code example that results in this phenomena.

a=[[1,2],[5,3],5,[5,6],[2,2]]
for b in a:
    print b[0]

> 1
> 5
> TypeError: 'int' object is unsubscriptable
Was it helpful?

Solution

It means you tried treating an integer as an array. For example:

a = 1337
b = [1,3,3,7]
print b[0] # prints 1
print a[0] # raises your exception

OTHER TIPS

The problem in your sample code is that the array "a" contains two different types: it has 4 2-element lists and one integer. You are then trying to sub-script every element in "a", including the integer element.

In other words, your code is effectively doing:

print [1,2][0]
print [5,3][0]
print 5[0]
print [5,6][0]
print [2,2][0]

That middle line where it does "5[0]" is what is generating the error.

You are trying to lookup an array subscript of an int:

>>> 1[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is unsubscriptable

That is, square brackets [] are the subscript operator. If you try to apply the subscript operator to an object that does not support it (such as not implementing __getitem__()).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top