[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