[pyar] Analizar cvs, creo que es una tontería...
gustavo c
p8queen en gmail.com
Dom Jul 10 16:08:32 ART 2011
On Sun, Jul 10, 2011 at 10:52:41AM -0300, Tordek wrote:
> On 10/07/11 10:31, Gabriel Rech wrote:
> >Hola a todos,
> >
> >Bueno, les escribo porque tengo una duda con un archivo csv (más
> >bien está separado por tabulaciones) que quiero analizar. Creo que
> >mi problema es principalmente que soy novato y desconozco algunos
> >trucos de iteración. Bueno, vamos al problema.
> >
> >Tengo un archivo de texto con la siguiente info
>
> [...]
>
> >Básicamente lo que quiero hacer es crear una lista para cada número
> >(primera columna), que contenga todos los nombres que coinciden con
> >este número, es decir:
>
> Si las listas pueden no ser contiguas, el archivo no es demasiado
> grande, y el orden no es (muy) importante, podés hacerlo así:
>
>
> #!/usr/bin/python
> import csv
> import collections
>
> f = open(str("archivo.txt"), "r")
> f_read = csv.reader(f, delimiter="\t")
>
> listas = collections.defaultdict(list)
> for num, nombre in f_read:
> listas[num].append(nombre)
>
> print listas
>
>
> defaultdict es un tipo de diccionario que, cuando no encuentra una
> cierta clave, te permite pasarle una función para que la cree. En
> este caso hacemos que si no encuentra un número, cree una lista
> vacía.
>
> en el bucle podés ahorrate lo de
> > num_id = row[0]
> > nomb_id = row[1]
>
> porque podés pasarle una lista de variables, y python las asigna a
> todas a la vez.
>
> Al final, en listas queda guardado un diccionario, en este caso
> queda así:
>
> {'1': ['GABRIEL', 'VICTOR', 'CARLOS'], '3': ['JUAN'], '2':
> ['DAMIAN', 'MARTIN'], '4': ['JOSE', 'PEDRO']}
>
>
+1
--
Gustavo C [mutt]
twitter: @fromgus
More information about the pyar
mailing list