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 originalmsg = {}
for num in range(X):
# se agregan claves a msg
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 originalfor num in range(X):
msg = {}
# se agregan claves a msg
tmsg[num] = msg
Si con lo de "variables variables" te referís a lo que puede hacer php:
Código PHP:
Ver original$cosa="Hola"
$$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.