TypeError:'set'对象不支持索引

时间:2017-05-16 01:16:48

标签: python python-3.x set

我刚刚在Python 3.5中做了一些随机的事情。 有15分钟的业余时间,我想出了这个:

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

但令人满意的随机成功的感觉并没有超过我。 相反,失败的感觉确实:

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

请帮忙

4 个答案:

答案 0 :(得分:5)

尝试使用方括号:

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代替set

答案 1 :(得分:4)

正如错误消息所示,SELECT column_name(s) FROM table_name WHERE column_name IN (value1, value2, ....); 确实不支持索引,seta,因为您使用了set literals(大括号)来指定其元素(从Python开始可用) 3.1)。但是,要从集合中提取元素,您可以简单地迭代它们:

set

答案 2 :(得分:0)

尝试像这样修改你的代码。

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不支持索引,但是list支持它,所以这里我将set转换为list并获取list的索引。

答案 3 :(得分:0)

@Sakib,你的集合a已经可以迭代了。请考虑使用此更新代码,而不是按索引访问元素。

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 )

此外,您的代码没有足够的意图帮助您实现最终目标。 例子:

  1. range()也会返回一个可迭代类型,因此没有理由将其转换为list
  2. 重复使用(覆盖)list关键字是不好的做法,这样做会导致更多问题
  3. len_wl尚未达到目的
  4. 由于#3,wordlistmessage都没有目的
  5. 希望这有帮助

    PS - 别忘了选择答案