如何在不导入deepcopy模块的情况下创建dictinoary的深层复制? 例如:
dict = {'A' : 'can' , 'B' : 'Flower' , 'C' : 'house'}
我已经尝试将键和值分配给2个不同的列表,然后使用这些值创建一个新的字典,但这不起作用。有什么想法吗?
答案 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}}构造函数基本相同。