Que signifie unsubscriptable
dans le contexte d'une TypeError comme dans:
TypeError: 'int' object is unsubscriptable
EDIT: exemple de code court qui entraîne ce phénomène.
a=[[1,2],[5,3],5,[5,6],[2,2]]
for b in a:
print b[0]
> 1
> 5
> TypeError: 'int' object is unsubscriptable
Cela signifie que vous avez essayé de traiter un entier comme un tableau. Par exemple:
a = 1337
b = [1,3,3,7]
print b[0] # prints 1
print a[0] # raises your exception
Le problème dans votre exemple de code est que le tableau "a" contient deux types différents: il a 4 listes à 2 éléments et un entier. Vous essayez ensuite de sous-scripter chaque élément de "a", y compris l'élément entier.
En d'autres termes, votre code fait efficacement:
print [1,2][0]
print [5,3][0]
print 5[0]
print [5,6][0]
print [2,2][0]
Cette ligne médiane où il fait "5 [0]" est ce qui génère l'erreur.
Vous essayez de rechercher un indice de tableau d'un int:
>>> 1[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is unsubscriptable
Autrement dit, les crochets []
Sont l'opérateur d'indice. Si vous essayez d'appliquer l'opérateur d'indice à un objet qui ne le prend pas en charge (tel que l'implémentation de __getitem__()
).