Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] llaves repetidas en una coleccion de diccionarios

Estas en el tema de llaves repetidas en una coleccion de diccionarios en el foro de Python en Foros del Web. Tengo un problema, importe un CSV con un listado de cosas, tiene 255 registros Quiero generar una coleccion de diccionarios [{'item': cantidad}, 'item2': ] como ...
  #1 (permalink)  
Antiguo 04/01/2017, 11:53
Avatar de Hyemin  
Fecha de Ingreso: agosto-2014
Mensajes: 147
Antigüedad: 9 años, 8 meses
Puntos: 0
llaves repetidas en una coleccion de diccionarios

Tengo un problema, importe un CSV con un listado de cosas, tiene 255 registros

Quiero generar una coleccion de diccionarios [{'item': cantidad}, 'item2': ]

como en los registros se repiten los items y yo los quiero solo una vez es que puse

Código Python:
Ver original
  1. for o in registros:
  2.     if  o not in listado:
  3.         veces = registros.count(o)
  4.         listado.append({o, veces})

Si 'o' no esta en la lista entonces hago el count de 'o' y lo agrego al listado.

El count lo hace bien pero me genera 255 elementos (uno por cada registro) quedandome entonces por ejemplo {item1: 100, item2 : 90, item3 : 50, item1 : 100}

No quiero que me guarde las llaves repetidas




Código Python:
Ver original
  1. filename = 'registros.csv'
  2.  
  3.  
  4. registros = []
  5.  
  6. #Abrimos el CSV como fichero
  7. with open(filename,  encoding='utf8')  as f:
  8.  
  9.     reader = csv.reader(f)
  10.     header_row = next(reader)
  11.  
  12.     # Recorro todaslas lineas del CSV
  13.     for row in reader:
  14.         registro= row[6]
  15.         oregistros.append(registro)
  16.  
  17. listado = []
  18.  
  19. for o in registros:
  20.     if  o not in listado:
  21.         veces = registros.count(o)
  22.         listado.append({o, veces})

Etiquetas: coleccion, diccionarios, llaves
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:29.