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
Était-ce utile?

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__()).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top