无需导入副本即可创建字典的深层复制

时间:2016-11-07 02:21:55

标签: python

如何在不导入deepcopy模块的情况下创建dictinoary的深层复制? 例如:

     dict = {'A' : 'can' , 'B' : 'Flower' , 'C' : 'house'}

我已经尝试将键和值分配给2个不同的列表,然后使用这些值创建一个新的字典,但这不起作用。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您的示例不需要deepcopy,因为它没有任何嵌套的dict。对于副本,您可以使用字典理解:

>>> dict1 = {'A' : 'can' , 'B' : 'Flower' , 'C' : 'house'}
>>> dict2 = {key: value for key, value in dict1.items()}
>>> dict2
{'A': 'can', 'C': 'house', 'B': 'Flower'}

然而,这种方法完成深度检查:

>>> dict1 = {'A' : []}
>>> dict2 = {key: value for key, value in dict1.items()}
>>> dict2['A'].append(5)
>>> dict1['A']
[5]

答案 1 :(得分:0)

除了Selcuk的答案之外,你可以简单地做到:     


    dict1 = {'A': 'can', 'B': 'Flower', 'C': 'house'}
    dict2 = {}
    for key in dict1 :
        dict2[key] = dict1[key]
    

但是,这个例子非常简单,如果你碰巧有对象而不是字符串,你必须自己重新实现`deepcopy`函数。

答案 2 :(得分:0)

看起来您正在使用不可变的字符串,因此不需要复制。因此,深层拷贝可能不比浅拷贝更有用。

复制字典的一种方法是使用其复制方法:

dict

另一种方法是将字典传递给my_dict = {'A' : 'can' , 'B' : 'Flower' , 'C' : 'house'} another_dict = dict(my_dict) 构造函数:

dict

您也可以使用字典理解,但在更多字符中使用{{1}}构造函数基本相同。