【问题标题】:Python 'set' object does not support indexingPython 'set' 对象不支持索引
【发布时间】:2012-02-13 18:17:05
【问题描述】:

我正在使用 Python (3.2.2) shell 开发 Windows 7 操作系统。尝试学习我输入的语言并返回以下内容:

>>> cast = {
    'cleese',
    'Palin',
    'Jones',
    'Idle'
    }
>>> print (cast[1])
Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    print (cast[1])
TypeError: 'set' object does not support indexing
>>> cast.append('Gilliam')
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    cast.append('Gilliam')
AttributeError: 'set' object has no attribute 'append'

===========================

似乎问题不在于编码,而在于程序的安装方式。

我已经安装,卸载并重新安装,但结果是一样的。在 Python 的 shell 准备好使用之前,我需要做些什么吗?

汉斯

【问题讨论】:

  • 你在这里发布的是完整的代码吗?看起来您正在定义一个字典,然后尝试使用列表表示法访问它。您应该在这里看到语法错误。试试 cast = ["cleese","Palin","Jones","Idle"]。注意 '[' 而不是 '{'

标签: indexing append typeerror


【解决方案1】:

在这里提一下,set's' 不支持索引,因为它们是基于哈希的,它与不支持索引的dictionaries 非常相似。您只能通过key 访问dict

如果您需要索引,您可以按如下方式转换您的集合:

convertedToList = list(set(1,2,3))

【讨论】:

  • 我讨厌 python。当然,任何理性的人都想迭代一个集合。
【解决方案2】:

您似乎试图定义一个列表。但是,您使用了大括号 {} 而不是括号 []。解释器将其视为字典而不是列表,因此索引和 append() 在这里不起作用。

【讨论】:

  • 如旧答案中所述,解释器将cast 视为一个集合,而不是字典。没有键/值对来形成字典。
【解决方案3】:

Python 似乎工作正常。关键是set 不支持索引或追加。尝试改用列表([] 而不是 {})。代替追加,setadd,但索引已失效。

Python 也有有用的帮助,

>>> help(set)

打印很多关于sets 的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 2019-11-12
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多