[Python] Algoritmo in CSV
Matteo Mattsteel Vitturi
mattsteel a hotmail.it
Lun 6 Set 2010 22:04:32 CEST
Io proverei un approccio alternativo e forse più Pythonico...
Considerando la singola colonna mi aspetto che la "varietà" delle lunghezze non sia molto ampia.
Memorizzerei quindi in un dict tali lunghezze usando come "chiave"
proprio la lunghezza, in questo modo non faccio alcun confronto ma
sfrutto la velocità di calcolo della chiave dei dict.
* apri file csv
* crea un oggetto csv_reader
* crea un array i cui elementi sono dict (uno per ogni campo)
* leggi riga per riga
* fai lo split dei campi e metti nell'array "campi"
* per ogni campo di "campi" calcola la lunghezza e segna una "x" nel dict con chiave = lunghezza.
* alla fine di tutto, esamina le (poche) chiavi di ciascun dict per determinare la max lunghezza di ciascun campo.
Se ho due minuti provo a buttar giù un esempio di codice.
Matteo.
From: vittorio.zuccala a gmail.com
Date: Thu, 2 Sep 2010 14:41:10 +0200
To: python a lists.python.it
Subject: [Python] Algoritmo in CSV
Buongiorno,
chiedo consiglio su un algoritmo da usare che sia veloce.
Anche solo in meta-codice.
Problema:
- carico un CSV con 200 colonne e 2 milioni di righe
- voglio trovare la lunghezza maggiore per ogni campo
Meta-codice
* apri file csv
* crea un oggetto csv_reader
* crea un array "lunghezzamax"
* leggi riga per riga
* fai lo split dei campi e metti nell'array "campi"
* per ogni campo guarda la lunghezza: se lunghezza(campi[i]) > lunghezza[i] allora lunghezza[i]=lunghezza(campi[i])
Ecco: il mio problema è che vengono effettuati 200*2.000.000 di IF e la cosa non mi piace molto.
Qualcuno ha un consiglio per ottimizzare?
Grazie in anticipo.
_______________________________________________
Python mailing list
Python a lists.python.it
http://lists.python.it/mailman/listinfo/python
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://lists.python.it/pipermail/python/attachments/20100906/48d9820f/attachment.htm
Maggiori informazioni sulla lista
Python