2016-11-07 61 views
0

如何在不導入深度拷貝模塊的情況下創建字典的深層拷貝? 如:創建字典的深度拷貝而不導入副本

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

我已經試過指定鍵值,以2名不同的列表,然後創建這些值的新字典,但不起作用。有任何想法嗎?

+4

爲什麼你不想導入'copy'? –

+0

我想創建一個沒有導入的項目 –

+0

@NicholasEvans我可以理解這一點,但這與Python哲學背道而馳。 –

回答

1

您可以使用字典解析:

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

順便說一句,這個例子並不需要deepcopy,因爲它沒有任何嵌套dict秒。

0

除了回答Selcuk,你可以簡單地做:


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

然而,這個例子是非常瑣碎,如果你碰巧有對象而不是字符串,你必須你自己重新實現`deepcopy`函數。

0

看起來你使用的字符串是不可變的,因此不需要被複制。所以深拷貝可能並不比淺拷貝更有用。複製字典

的一種方法是使用它的複製方法:

my_dict = {'A' : 'can' , 'B' : 'Flower' , 'C' : 'house'} 
another_dict = my_dict.copy() 

另一種是把字典進入dict構造:

my_dict = {'A' : 'can' , 'B' : 'Flower' , 'C' : 'house'} 
another_dict = dict(my_dict) 

你也可以使用字典理解,但是在很多字符中使用dict構造函數實質上是一樣的。