2012-01-19 15 views
6

Estoy trabajando en un sistema operativo Windows 7 en un shell Python (3.2.2). Tratando de aprender el idioma entré y había regresado el siguiente:El objeto 'conjunto' de Python no admite la indexación

>>> 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' 

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

Parece que el problema no está en la codificación, sino en cómo se instaló el programa.

He instalado, desinstalado e instalado de nuevo, pero el resutl es el mismo. ¿Hay algo que deba hacer antes de que el shell de Python esté listo para ser utilizado?

hans

+0

Es lo que has enviado aquí el código completo? Parece que estás definiendo un dict y luego tratando de acceder usando notación de lista. Debería ver un error de sintaxis aquí. Pruebe cast = ["cleese", "Palin", "Jones", "Idle"]. Observe el '[' en lugar de '{' – timc

Respuesta

18

Python parece funcionar bien. El punto es que set no es compatible con indexar o agregar. Intente utilizar una lista en su lugar ([] en lugar de {}). En lugar de agregar, set tiene add, pero la indexación está desactivada.

Y Python tiene ayuda útil,

>>> help(set) 

imprime una gran cantidad de información acerca de set s.

4

Parece que estaba tratando de definir una lista. Sin embargo, usaste llaves {} en lugar de corchetes []. El intérprete lo trató como un diccionario en lugar de una lista, por lo que indexar y anexar() no funcionó aquí.

+2

Como se indica en la respuesta anterior, el intérprete trata 'cast' como un conjunto, no como un diccionario. No hay pares clave/valor para formar un dict. – alexwlchan

0

Solo para mencionar aquí, set's' no son compatibles con la indexación, ya que son basados ​​en hash, es muy similar a dictionaries que no son compatibles con la indexación también. Solo puede acceder a dict por key.

Si necesita indexación, se puede convertir el conjunto de la siguiente manera:

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