我想要一个永远不会改变的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))
有关浅拷贝和深拷贝的更多信息,请点击此链接。
添加回答
举报
0/150
提交
取消