Python 'set' объект не поддерживает индексацию - PullRequest
8 голосов
/ 19 января 2012

Я работаю на ОС Windows 7 в оболочке Python (3.2.2).Пытаясь выучить язык, который я ввел, я вернул следующее:

>>> 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 будет готова к использованию?

hans

Ответы [ 3 ]

19 голосов
/ 19 января 2012

Python работает нормально. Дело в том, что set не поддерживает индексирование или добавление. Попробуйте вместо этого использовать список ([] вместо {}). Вместо добавления set имеет add, но индексирование отсутствует.

А у Python есть полезная помощь,

>>> help(set)

печатает много информации о set s.

4 голосов
/ 27 апреля 2015

Похоже, вы пытались определить список. Однако вы использовали скобки {} вместо скобок []. Интерпретатор рассматривал его как словарь, а не список, поэтому индексирование и append () здесь не работают.

2 голосов
/ 13 декабря 2017

Просто отметим, что set's' не поддерживают индексацию, поскольку они основаны на хэше, она очень похожа на dictionaries, которая также не поддерживает индексацию.Вы можете получить доступ только к dict по key.

Если вам нужна индексация, вы можете преобразовать ваш набор следующим образом:

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