Ver Mensaje Individual
  #3 (permalink)  
Antiguo 02/06/2010, 08:53
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Diccionario dentro de un diccionario...

No termino de entender bien el código, debo admitir que no le he prestado la atención suficiente (se hace difícil cuando uno no sabe lo que hace el programa). Sin embargo, si no me equivoco, la estructura es así:

Código Python:
Ver original
  1. msg = {}
  2. for num in range(X):
  3.     # se agregan claves a msg
  4.     tmsg[num] = msg

Y decís que todas las entradas de tmsg contienen el último mensaje recuperado. El problema es que msg es *siempre* el mismo diccionario, ya que se inicializa solamente una vez fuera del bucle. Luego vas cambiando los valores de cada clave, pero msg sigue apuntando al mismo diccionario y por lo tanto en cada tmsg[num] estás guardando una referencia a la misma estructura, cuyos datos son sobrescritos en cada iteración.

Solución: crea un nuevo msg en cada paso del bucle, moviendo la inicialización dentro del for:

Código Python:
Ver original
  1. for num in range(X):
  2.     msg = {}
  3.     # se agregan claves a msg
  4.     tmsg[num] = msg

Si con lo de "variables variables" te referís a lo que puede hacer php:
Código PHP:
Ver original
  1. $cosa="Hola"
  2. $$cosa crea una variable $Hola

No existe tal cosa. Va en contra de la simpleza y elegancia que los desarrolladores de Python pretenden darle al lenguaje. Podés jugar, si te resulta útil, con las claves de un diccionario: http://stackoverflow.com/questions/1...bles-in-python


Saludos.