[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