TypeError: ‘set’ object ondersteunt geen indexering

Ik heb zojuist wat willekeurige dingen gedaan in Python 3.5.
En met 15 minuten vrije tijd bedacht ik dit:

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])

Maar dat bevredigende gevoel van willekeurig succes overviel me niet.
In plaats daarvan deed het gevoel van falen:

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

Help alstublieft


Antwoord 1, autoriteit 100%

Probeer vierkante haken:

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"]

d.w.z.: gebruik een listin plaats van een set


Antwoord 2, autoriteit 60%

Zoals de foutmelding zegt, ondersteunt setinderdaad geen indexering, en is aeen set, aangezien je set literalen (accolades) hebt gebruikt ) om zijn elementen te specificeren (beschikbaar sinds Python 3.1). Als u echter elementen uit een set wilt extraheren, kunt u ze eenvoudig herhalen:

for i in a:
    print(i)

Antwoord 3, autoriteit 20%

@Sakib, je set akan al worden herhaald. Overweeg om deze bijgewerkte code te gebruiken in plaats van de elementen per index te openen.

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"}
for x in a:
  print ( x )

Bovendien toont uw code niet genoeg intentie voor ons om u te helpen uw uiteindelijke doel te bereiken.
Voorbeelden:

  1. range()retourneert ook een itereerbaar type, dus er is geen reden om het te converteren naar een list
  2. Het is een slechte gewoonte om het trefwoord listopnieuw te gebruiken (overschrijven), en dit zal tot veel meer problemen leiden
  3. len_wlheeft nog geen doel
  4. Vanwege #3 hebben noch wordlistnoch messageeen doel

Hopelijk helpt dit

PS – vergeet niet een antwoord te selecteren


Antwoord 4

probeer je code op deze manier aan te passen.

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"}
list_a = list(a)
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 list_a[x]

set ondersteunt geen indexering, maar lijst ondersteunt het, dus hier converteer ik set naar lijst en krijg index van lijst.

Other episodes