Python嵌套字典拷贝疑问:copy.copy为何修改新字典会影响原字典?
解决嵌套字典的深拷贝问题
你遇到的问题是因为copy.copy()属于浅拷贝——它仅复制外层字典的键值对,但内层的子字典仍然是原字典的引用。修改子字典时,原字典自然会跟着变化。
要完全复制嵌套字典的所有层级,让新字典和原字典彻底独立,你需要使用copy.deepcopy(),它会递归复制所有嵌套的可变对象:
from copy import deepcopy a = {"1": {"1":2, "2":3}, "2":{"3":4, "4":5}} b = deepcopy(a) b["1"].update({"4":3}) # b == {"1": {"1":2, "2":3, "4":3}, "2":{"3":4, "4":5}} # a == {"1": {"1":2, "2":3}, "2":{"3":4, "4":5}} 原字典保持不变
不管嵌套结构里是字典、列表还是其他可变类型,deepcopy()都会逐层创建新的实例,确保修改拷贝后的对象不会影响原对象。
内容的提问来源于stack exchange,提问作者Aerocobra
相关产品推荐
相关产品推荐

