2012-01-19 10 views
6

Sto lavorando su un sistema operativo Windows 7 in una shell Python (3.2.2). Cercando di imparare la lingua sono entrato ed era tornato il seguente:L'oggetto 'set' Python non supporta l'indicizzazione

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

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

Sembra che il problema non sia nella codifica, ma nel modo in cui è stato installato il programma.

Ho installato, non installato e installato di nuovo, ma il resutl è lo stesso. C'è qualcosa che devo fare prima che la shell di Python sia pronta per essere usata?

hans

+0

è ciò che hai postato qui il codice completo? Sembra che tu stia definendo un dict e poi provando ad accedervi usando la notazione elenco. Dovresti vedere un errore di sintassi qui. Prova cast = ["cleese", "Palin", "Jones", "Idle"]. Si noti '[' invece di '{' – timc

risposta

18

Python sembra funzionare correttamente. Il punto è che set non supporta l'indicizzazione o l'aggiunta. Prova a utilizzare invece un elenco ([] anziché {}). Al posto dell'aggiunta, set ha add, ma l'indicizzazione è esaurita.

E Python ha aiuto utile,

>>> help(set) 

stampa un sacco di informazioni circa set s.

4

Sembra che stavi cercando di definire un elenco. Tuttavia, hai usato parentesi graffe {} invece di parentesi []. L'interprete lo ha trattato come un dizionario piuttosto che come una lista, quindi l'indicizzazione e l'append() non hanno funzionato qui.

+2

Come indicato nella vecchia risposta, l'interprete considera 'cast' come un set, non un dizionario. Non ci sono coppie chiave/valore per formare un dict. – alexwlchan

0

Solo per menzionare qui, set's' non supportano l'indicizzazione, poiché sono basati su hash, è molto simile a dictionaries che non supporta l'indicizzazione. È possibile accedere a un dict solo tramite il numero key.

Se avete bisogno di indicizzazione, è possibile convertire il set come segue:

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