为了账号安全,请及时绑定邮箱和手机立即绑定

为什么尽管我使用 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 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号