[PIPython] confronto tra dizionari
ciccio a unical.it
ciccio
Ven 19 Nov 2004 15:16:43 CET
> On Tuesday 16 March 2004 12:35 pm, ciccio a unical.it wrote:
> ...
> > Ho provato ad utilizzare il codice di seguito ma ottengo un errore:
> > > import sets
> > > risultato = {}
> > > for k in sets.Set([x for d in dizionari for x in d]):
> > > risultato[k] = [d.get(k, '-') for d in dizionari]
> >
> > Traceback (most recent call last):
> > File "Dep_sum.py", line 33, in ?
> > risultato[k] = [d.get(k, '-') for d in matrix]
> > AttributeError: 'tuple' object has no attribute 'get'
>
> Come ti dice chiarissimamente il messaggio d'errore, d non e` un
dizionario,
>
> bensi` una tupla. Ovviamente non puoi applicare a una tupla le operazioni
> che potresti applicare a un dizionario!
>
> > Nel mio caso specifico io ottengo una serie di dizionari per ogni file
>
> Non ci credo. Mi pare invece che tu ottenga delle tuple, NON dei
> dizionari.
> Se fosse vero che avevi ottenuto dei dizionari, allora hai fatto qualche
> perversa trasformazione per renderli tuple.
>
> > letto. Si chiamano tutti matrix e non so come richiamare una specifica
> > coppia chiave:valore.
>
> Sara` meglio cominciare col chiarirsi come "ottieni" quelli che tu sostieni
>
> essere dizionari e invece sembrano essere tuple.
Forse ho creato un po' di confusione. Io sto cercando di recuperare dati da
file testuali tutti dello stesso formato. (E' uno studio di simulazione,
quindi a seconda delle esigenze il numero di files che vengono creati e'
differente, diciamo n in generale)
Ogni file e simile al seguente:
1 5 1 1 1 1 1 0.1 1
2 6 1 1 1 1 1 0.2 1
3 7 1 1 1 1 1 0.3 1
4 8 1 1 1 1 1 0.4 1
Ad ogni coppia di valori appartenete alle prime due colonne deve
corrispondere
il valore specifico nella colonna 8. Per esempio (1,5)=0.1, (2,6)=0.2 ecc.
Avendo molti files, Potro' ottenere valori uguali o diversi per ogni coppia,
ma che devono comunque essere registrati, o nessun valore e quindi un simbolo
del tipo "-". Potro' ottenere, inoltre, nuove coppie che devo in ogni caso
aggiungere.
L'idea iniziale era quella di raggruppare i dati in dizionari(uno per file)
in
cui ciascuna chiave e' una tupla ('1','5') ecc. e ciascun valore e' quello
presente nella colonna 8.
Poiche' i dati sono presenti in file nominati file0, file1..filen , ho creato
un ciclo for che per ciascun file crea un dizionario. Ma in questo modo tutti
i dizionari che ottengo hanno lo stesso nome perche'
for i in range(0, n):
infile="file%i.txt" %(i)
f=open(infile, "r")
matrix={}
Una volta ottenuti non so piu' andare avanti, perche' dovrei inserire
ciascuna
tupla in un nuovo dizionario e aggiornare i suoi valori di volta in volta, ma
non so come aggiungere i valori senza perdere quelli precedenti e non so'
come
chiamare le singole tuple, poiche' i dizionari hanno tutti lo stesso nome!
Inoltre non posso utilizzare il modulo sets!
Spero di esser stato un po' piu' chiaro
grazie in anticipo
ernesto
-------------------------------------------------
This mail sent through IMP: http://horde.org/imp/
More information about the Python
mailing list