TypeError: 'set' objet ne prend pas en charge l'indexation
J'ai juste fait quelques aléatoire des trucs en Python 3.5.
Et avec 15 minutes de temps libre, je suis venu avec cette:
a = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w",
"x", "y", "z"}
len_a = len(a)
list = list(range(0, len_a))
message = ""
wordlist = [ch for ch in message]
len_wl = len(wordlist)
for x in list:
print (a[x])
Mais que la satisfaction de se sentir de l'aléatoire le succès ne s'est pas exécuté sur moi.
Au lieu de cela, le sentiment d'échec n':
Traceback (most recent call last):
File "/Users/spathen/PycharmProjects/soapy/soup.py", line 9, in <module>
print (a[x])
TypeError: 'set' object does not support indexing
S'il vous plaît aider
Note: Ne pas le nom d'une variable
Afin de mieux définir les
list
; à partir du moment que vous attribuez, vous avez le nom-l'ombre de la list
constructeur. Pour cette question, vous pouvez tout aussi bien en boucle sur vos valeurs directement (for x in a: print(x)
); l'itération d'indices et d'indexation est clairement non-pythonic, pour ne pas mentionner plus lent et moins auto-documentation.Afin de mieux définir les
a
via: import string
/ a = string.ascii_lowercase
OriginalL'auteur Sakib Pathen | 2017-05-16
Vous devez vous connecter pour publier un commentaire.
Essayer crochets:
c'est à dire: utiliser un
list
au lieu d'unset
list
, pas un "tableau".OriginalL'auteur lostbard
Que le message d'erreur dit,
set
, en effet, ne prend pas en charge l'indexation, eta
est unset
, depuis que vous avez utilisé ensemble des littéraux (accolades) pour spécifier ses éléments (disponible depuis le Python 3.1). Cependant, d'en extraire des éléments d'un ensemble, vous pouvez simplement effectuer une itération sur eux:OriginalL'auteur Andrzej Pronobis
essayez de modifier votre code comme celui-ci.
jeu ne prend pas en charge l'indexation toutefois liste de soutien, alors je convertir l'ensemble de la liste et d'obtenir l'indice de la liste.
OriginalL'auteur somil
@Sakib, votre
a
est déjà itératif. Veuillez considérer l'utilisation de cette mise à jour de code au lieu d'accéder à des éléments par index.En outre, votre code ne montre pas assez d'intention pour nous de vous aider à atteindre votre but ultime.
Exemples:
range()
également retourne un objet iterable type, donc il n'y a pas de raison de le convertir en unlist
list
mot-clé, et il le faire conduira à beaucoup plus de problèmeslen_wl
ne sert pas un but maiswordlist
nimessage
ont une fin, que ce soitEspère que cette aide
PS - n'oubliez pas de sélectionner une réponse
OriginalL'auteur Chris