2017-04-16 66 views
-4

这是我的问题,我使用字典,但我想在更改它之前获取它的副本。像这样,如果他们不同,我可以将两个字典都比较。字典更改,无码在更改

我不喜欢这样写道:

old_dic = dict(data) 

,但我改变后的功能数据,它是这样的

data = play_turn(data) 

完成,但在那之后我想打印old_dic但它也改变。当然,我没有在功能play_turn中更改它,我试图只更改数据,然后打印两个数据,但只更改了数据。 play_turn使数据发生许多变化。 play_turn函数使得船只(字典中的键是因为它是一个游戏)改变方向或改变速度,但是每个信息都储存在数据字典中。 在字典中也有一些关键字或一些列表的字典。

play_turn函数期间,如何不更改old_dic

+2

请给出[mcve] - play_turn是做什么的? – jonrsharpe

+0

它使数据发生很多变化。 play_turn函数使得船只(字典中的键是因为它是一个游戏)改变方向或改变速度,但是每个信息都存储在数据字典中 – Vipongo

+1

不要*描述*,提供MCVE的问题我问上面。 – jonrsharpe

回答

1

需要克隆字典这样

import copy 
old_dic_copy = copy.deepcopy(data) 

你需要使用=,当你想,当你想克隆到参考复制到目标

使用.copy.deepcopy对象

那么你可以在更换新的后打印他:)

+0

我已经试过,但没有单词 – Vipongo

+1

'deepcopy'将是必要的,如果字典里面有多个级别的字典或其他列表,请尝试 – MatsLindh

+0

再次查看答案..您需要导入副本 –