我想要一個(gè)永遠(yuǎn)不會(huì)改變的python字典。在下面的代碼中,我希望 DEFAULT_DICT 不會(huì)被更改: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 會(huì)根據(jù) my_dict 發(fā)生變化嗎?我在想那個(gè)用途my_dict = dict(DEFAULT_DICT)會(huì)糾正問題,但不會(huì)。
1 回答

largeQ
TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊
當(dāng)您編寫my_dict = dict(DEFAULT_DICT)DEFAULT_DICT 的淺拷貝時(shí),會(huì)產(chǎn)生問題,但您需要該對(duì)象的深層拷貝。
要解決您的問題,您可以使用模塊中的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)淺拷貝和深拷貝的更多信息,請(qǐng)點(diǎn)擊此鏈接。
添加回答
舉報(bào)
0/150
提交
取消