亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么盡管我使用 dict(DEFAULT_DICT) 來初始化其他字典

為什么盡管我使用 dict(DEFAULT_DICT) 來初始化其他字典

SMILET 2022-06-28 15:49:29
我想要一個永遠不會改變的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 會根據 my_dict 發生變化嗎?我在想那個用途my_dict = dict(DEFAULT_DICT)會糾正問題,但不會。
查看完整描述

1 回答

?
largeQ

TA貢獻2039條經驗 獲得超8個贊

當您編寫my_dict = dict(DEFAULT_DICT)DEFAULT_DICT 的淺拷貝時,會產生問題,但您需要該對象的深層拷貝。


要解決您的問題,您可以使用模塊中的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))


有關淺拷貝和深拷貝的更多信息,請點擊此鏈接。


查看完整回答
反對 回復 2022-06-28
  • 1 回答
  • 0 關注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號