Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/03/2015, 10:44
Koan
 
Fecha de Ingreso: diciembre-2009
Ubicación: Spain
Mensajes: 180
Antigüedad: 14 años, 4 meses
Puntos: 9
¿Cómo añadir mas valores a todas las claves de un diccionario?

Seguramente la respuesta será muy sencilla, pero le doy vueltas y no veo la solución. Quizás, por utilizar en exceso las listas y dejar un poco de lado los diccionarios.

La idea es leer un archivo de texto donde hay datos. Estos datos se guardan en una lista:

Código Python:
Ver original
  1. lista = [5, 5, 5, 3, 6, 1, 5, 7, 1, 7, 5, 5, 3, 7, 6, 7, 2, 6, 1, 6]

Ahora creo un diccionario donde cada clave toma el valor hasta el máximo dato de la lista:

Código Python:
Ver original
  1. # generamos las claves de 1-7
  2. dic = {}
  3. for x in range(1, 8):    
  4.     dic[x] = []

Código Python:
Ver original
  1. dic
  2. {1: [], 2: [], 3: [], 4: [], 5: [], 6: [], 7: []}


Lo que yo quiero, es que al recorrer las claves del diccionario, cada valor se empareje con su clave. Y quede un dibujo asi:

Código Python:
Ver original
  1. dic
  2. {1: [1,1,1], 2: [2], 3: [3,3], 4: [], 5: [5,5,5,5,5,5], 6: [6,6,6,6], 7: [7,7,7,7]}

Se trata de rellenar cada clave con la cantidad de valores de la lista de su mismo número.

El cuerpo del for sería este:

Código Python:
Ver original
  1. for x in lista:
  2.     for j in dic.keys():

En este cuerpo se debería comprobar si x == j. De ser así, se añadiría al valor de su clave correspondiente. Si fuera una lista, lo tendria fácil con el método append. Pero al ser un valor de una clave, no se como añadir mas elementos dentro de esa misma clave.

Pero me he estancado. No puedo utilizar una lista en los valores. Ya que al ser por referencia, me cambia los valores de todas las claves.

Y si hago:

Código Python:
Ver original
  1. dic[1] = [1]

...no se como añadir mas elementos a la lista de cada clave.

¿Alguna ídea?

P.D. Tendré que usar mas los diccionarios...

Última edición por Koan; 31/03/2015 a las 11:00