【发布时间】:2023-04-01 09:44:02
【问题描述】:
我正在尝试使用 for 循环通过更改预定义字典中的商品价格值来生成商品价格的随机值。
然后将这个预定义字典的新值添加到另一个预定义字典的末尾,以便存储价格历史记录。
这是我的代码:
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)
代码将代数作为 for 循环迭代次数的参数。并使用 2 代代此输出在控制台上生成:
{'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}}
可以看出,以前的值被覆盖了,我猜对此有一个非常简单的解释,比如“存储不同世代值的字典引用了第一个值的值”,但我在这方面找不到帮助在任何地方都很重要。
所以有人可以向我解释我做错了什么。
【问题讨论】:
-
我猜它一定是为每个键引用了旧字典,因为我现在通过在第一个 for 循环中引入一个新字典来修复它。但是,如果有人仍然向我解释为什么字典似乎以这种方式工作,那就太好了。
-
字典值只是单个数字。每次迭代您更改 值。如果您想创建历史记录,您需要将 prices 放入容器中,例如 list。
标签: python dictionary key key-value