Question
Que signifie de unsubscriptable
dans le contexte d'un TypeError comme dans:
TypeError: 'int' object is unsubscriptable
EDIT: Exemple de code court que les résultats dans 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
La solution
Cela signifie que vous avez essayé le traitement d'un nombre entier comme un tableau. Par exemple:
a = 1337
b = [1,3,3,7]
print b[0] # prints 1
print a[0] # raises your exception
Autres conseils
Le problème dans le code échantillon est que le réseau « a » contient deux types différents: il dispose de 4 listes 2-éléments et un nombre entier. Vous êtes alors essayez de sous-script chaque élément « a », y compris l'élément entier.
En d'autres termes, votre code est en train de faire 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
C'est, entre crochets []
sont l'opérateur d'accès. Si vous essayez d'appliquer l'opérateur à un objet indice qui ne supporte pas (par exemple ne pas mettre en œuvre __getitem__()
).