[PIPython] creare array multidimensionali

Simone Piunno pioppo
Ven 19 Nov 2004 15:16:45 CET


On Tuesday 20 April 2004 13:52, ciccio a unical.it wrote:

> Questa parte di codice l'ho gia' utilizzata con successo. La questione
> dell'array multidimensionale e' nata quando ho provato a tradurre uno
> script dal perl che fa cio' che voglio, ma essendo in perl non ne ho il
> controllo e mi sono stupito della semplicita' del perl nel trattare gli
> array lo script e' il seguente:

Il problema è che stai usando un array come se fosse un hash, solo perchè perl 
esige che le chiavi degli hash siano scalari.  
Python non ti permette di far confusione tra sequence e dictionary, però i 
dictionary di python sono più potenti degli hash di perl.

#!/usr/bin/python

CRLF = '\r\n'
file_list = 'file_list.txt'
output_file = 'summary.txt'
results = {}
replicate = 0

for filename in file(file_list):
    filename = filename.rstrip(CRLF)
    for line in file(filename):
        a, b, c = line.rstrip(CRLF).split('\t')
        a, b, c = int(a), int(b), c.strip()
        results[a, b, replicate] = c
    replicate += 1
out = file(output_file, 'w')
m = 1 + max([x[0] for x in results])
for i in range(1, m):
    for j in range(1 + i, 1 + m):
        clist = [results.get((i, j, k), '') for k in range(0, replicate)]
        print >> out, '\t'.join([str(i), str(j)] + clist)

Nota che il tuo script perl non funziona (o almeno non fa quello che 
descrivevi nell'esempio precedente) poichè manca un +1 nell'estremo destro 
del ciclo su $j, durante la stampa del file d'uscita.

-- 
http://thisurlenablesemailtogetthroughoverzealousspamfilters.org



More information about the Python mailing list