复制嵌套字典

时间:2012-02-29 01:40:42

标签: python algorithm

我有一个带整数键的字典,每个键的值是一个带整数键和整数值的映射。

例如:

x = {
    3 : {0:set([1,2,5]), 1:set([3]), 2:set([7,8])},
    4 : {0:set([1,2]),   1:set([4]), 2:set([7])},
    }  

我正在尝试编写一个执行以下操作的函数:

给定x(例如2)的每个值中存在的键(k),它应返回具有类似结构和以下属性的新dict:

  • Key(T):k
  • 下所有值的并集中的元素
  • 值:具有相同内部键的dict,但给定内部键(k')的值是旧字典中与k'相关联的所有集合的T in x[k] < / LI>

在上面的例子中,如果参数是k=2,那么它应该返回:

y = {
    7 : {0:set([1,2,5]), 1:set([3,4]),  2:set([7])},
    8 : {0:set([1,2,5]), 1:set([3]),    2:set([8])},
    }

我目前正在通过迭代旧dict中k下的所有可能值并构建新值来实现此目的。有没有一种有效的方法呢?

1 个答案:

答案 0 :(得分:4)

您还必须创建对象的副本,因为您可以使用deepcopy copy模块。查看http://docs.python.org/library/copy.html#copy.deepcopy了解详细信息。这将复制所有对象和基本数据。