如何使用deepcopy仅更新Python嵌套字典中的单个值?
问题根源
你遇到的修改单城市子字典同步到所有城市的问题,核心是初始化邻接表时所有城市对应的子字典都指向了内存中的同一个字典对象,和后续赋值逻辑无关。你之前写的拷贝逻辑存在错误,没有解决子字典共用引用的问题。
修复步骤
- 修正邻接表初始化逻辑,保证每个城市的子字典是独立对象
import copy # 定义子字典模板 sub_dict_template = {'v1': -1, 'v2': -1, 'v3': -1} # 替换为你自己的城市列表 all_cities = ['city1', 'city2', 'city3'] my_dict = {} for city in all_cities: # 每个城市单独拷贝一份模板,彻底切断子字典的引用关联 my_dict[city] = copy.deepcopy(sub_dict_template)
删除你之前错误的拷贝代码
你写的the_dict[cit] = copy.deepcopy(my_dict)逻辑错误,是将整个外层字典拷贝后赋值给子键,不符合邻接表结构,直接删除即可。后续赋值不需要额外拷贝
初始化完成后,每个城市的子字典已经是独立内存对象,你原有逻辑里给指定城市子字典加键值的操作不需要额外做深拷贝,直接赋值只会修改对应城市的子字典,不会影响其他城市。
内容的提问来源于stack exchange,提问作者Marshall Royce
相关产品推荐
相关产品推荐

