Agregar una nueva clave al diccionario sobrescribe todas las claves almacenadas previamente con nuevos valores de claves

Estoy tratando de usar un bucle for para generar valores aleatorios para los precios de los artículos, cambiando el valor de los precios de los artículos en un diccionario predefinido.

Los nuevos valores de este diccionario predefinido se agregan al final de otro diccionario predefinido para que se pueda almacenar un historial de precios.

Aquí está mi código:

tradable_good_prices= {'iron' : 0, 'gold' : 0, 'lead' : 0, 'ruby' : 0 'emerald' : 0, 'steel' : 0, 'diamond' : 0} 
item_list = tradable_good_prices.keys() 
item_price_history = {}

def Random_economy(generations):

    for generation_number in range(0, generations): 

        for list_number in range(0, len(item_list)): 

            tradable_good_prices[item_list[list_number]] = np.random.random_integers(100,1000) 

        print(tradable_good_prices)

        item_price_history[generation_number] = tradable_good_prices 

        print(item_price_history)

Random_economy(2)

el código toma generaciones como argumento para el número de iteraciones for loop. Y usando un valor de 2 por generaciones, esta salida se produce en la consola:

{'steel': 821, 'diamond': 477, 'lead': 325, 'gold': 914, 'iron': 542, 'emerald': 360, 'ruby': 705}

{0: {'steel': 821, 'diamond': 477, 'lead': 325, 'gold': 914, 'iron': 542, 'emerald': 360, 'ruby': 705}}

{'steel': 751, 'diamond': 158, 'lead': 322, 'gold': 662, 'iron': 180, 'emerald': 846, 'ruby': 570}

{0: {'steel': 751, 'diamond': 158, 'lead': 322, 'gold': 662, 'iron': 180, 'emerald': 846, 'ruby': 570}, 1: {'steel': 751, 'diamond': 158, 'lead': 322, 'gold': 662, 'iron': 180, 'emerald': 846, 'ruby': 570}}

Como se puede ver, los valores anteriores se están sobrescribiendo, supongo que hay una explicación bastante simple para esto, como "el diccionario que almacena los diferentes valores de generación hace referencia al primero para sus valores", pero no puedo encontrar ayuda sobre este asunto en ningún lado.

Entonces, ¿podría alguien explicarme qué estoy haciendo mal?

Respuestas a la pregunta(1)

Su respuesta a la pregunta