我想要一個永遠(yuǎn)不會改變的python字典。在下面的代碼中,我希望 DEFAULT_DICT 不會被更改:DEFAULT_DICT = { 'history':{ 'id':[] }}my_dict = dict(DEFAULT_DICT)print("my_dict is {}".format(my_dict))print("DEFAULT_DICT is {}".format(DEFAULT_DICT))my_dict['history']['id'].append("toto")print("my_dict is {}".format(my_dict))print("DEFAULT_DICT is {}".format(DEFAULT_DICT))有人可以告訴我為什么 DEFAULT_DICT 會根據(jù) my_dict 發(fā)生變化嗎?我在想那個用途my_dict = dict(DEFAULT_DICT)會糾正問題,但不會。
1 回答

largeQ
TA貢獻(xiàn)2039條經(jīng)驗 獲得超8個贊
當(dāng)您編寫my_dict = dict(DEFAULT_DICT)DEFAULT_DICT 的淺拷貝時,會產(chǎn)生問題,但您需要該對象的深層拷貝。
要解決您的問題,您可以使用模塊中的deepcopy功能copy:
from copy import deepcopy
DEFAULT_DICT = {
'history': {
'id': []
}
}
my_dict = deepcopy(DEFAULT_DICT)
print("my_dict is {}".format(my_dict))
print("DEFAULT_DICT is {}".format(DEFAULT_DICT))
my_dict['history']['id'].append("toto")
print("my_dict is {}".format(my_dict))
print("DEFAULT_DICT is {}".format(DEFAULT_DICT))
有關(guān)淺拷貝和深拷貝的更多信息,請點擊此鏈接。
添加回答
舉報
0/150
提交
取消