You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python修改字典副本时原数据同步变动的原因及解决方案

问题根源

你当前使用的dict(request.data.copy())属于浅拷贝,仅会复制字典的最外层结构,字典内部嵌套的可变对象(子字典、列表等)仍然和原对象共享内存地址。你修改reserve_data中嵌套的子字典时,initial_data中对应的嵌套对象会同步变动,所以才会出现你没有主动修改initial_data但它的值发生变化的情况。

解决方法

使用Python标准库copy中的deepcopy方法完成深拷贝,递归复制所有层级的可变对象,让initial_data和reserve_data完全独立:

import copy

# 将原有浅拷贝替换为深拷贝
initial_data = copy.deepcopy(request.data)
reserve_data = copy.deepcopy(request.data)

# 后续原有逻辑保持不变
print(initial_data)
for key in initial_data.keys():
    merchant_data = initial_data.get(key)
    for sub_key in merchant_data.keys():
        if sub_key in keys_to_change:
            reserve_data[key].pop(sub_key)
            reserve_data[key][values_to_change.get(sub_key)] = merchant_data.get(sub_key)
print(initial_data)

修改后操作reserve_data不会再影响initial_data的取值。

内容的提问来源于stack exchange,提问作者million

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 15:15:02