首页 > 解决方案 > 复杂字典的深拷贝

问题描述

我面临一个我看不到明确解决方案的问题。

我有一个嵌套字典,其中包含一些自定义对象的字典。我需要制作这本字典的深层副本,以便在不更改原始字典的情况下修改它的一些值。因此,我正在考虑制作字典的深层副本。

但是,由于某些原因,字典的键是具有覆盖__set_attr__()方法的对象,该方法可以防止对属性进行任何修改。因此,似乎无法直接应用该copy.deepcopy()方法。

请参阅下面的简短代码示例:

class SpecialKey:
      __slots__ = ('asset', )

      def __init__(self, asset):
          super(SpecialKey, self).__setattr__('asset',asset)

      def __setattr__(self):
          raise AttributeError("SpecialKey should not be changed")


import copy 

my_dict = {SpecialKey("test"): [1, 2, 3]}
my_dict_copied = copy.deepcopy(my_dict)

标签: pythondictionaryobjectcopy

解决方案


推荐阅读