我不确定我是否会在这里发疯。我有一个存储在字典中的数字数据,我将运行一个函数来改变这些数据。在我这样做之前,我想暂时存储数据以与下一次迭代进行比较。在此示例中,dictionary
是有问题的字典,update_data
是一个操作字典中对象'data'
的值的函数。
示例:
for i in range(n_iterations):
old_data = dictionary.get('data')
#call function which manipulates data
dictionary['data'] = update_data(dictionary)
diff = max(dictionary['data']-old_data)
当我比较新旧时,它们在每次迭代时都是相同的。 diff
总是0
,当我直观地比较它们时,似乎当我设置old_data
时,我暗示变量old_data
和字典值之间存在全局链接。
有人可以澄清上面例子中字典对象和变量之间的联系吗?此外,有人可以建议在操作之前存储对象的变通方法吗?谢谢
答案 0 :(得分:0)
在这个例子中,我打算做的是制作一本独立的字典副本。 python所做的是创建对该字典的新引用。为了保持独立性,如@ShadowRanger的注释和上面的链接,您需要制作字典及其值的显式副本。按照问题中的示例,可以使用
实现import copy
old_data = copy.deepcopy(dictionary)['data']
现在old_data
是一个独立的副本' dictionary['data']
中的值。