2016-11-07 2 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 во многих других символах.