2017-01-24 2 views
0

У меня проблема со словарем. См. Примеры.Переменная Python с проблемой связывания словаря

dict1 = {"key1" : "value1","key2" : "value2"} 
tempdict1 = dict1 
dict1.pop("key1") 
print(dict1) #returns {"key2":"value2"} 
print(tempdict1) #returns {"key2":"value2"} also. 

Файл dict1 работает так, как ожидалось, но tempdict1 также имеет то же значение, что и dict1.

Я использую Python 2.7.

Спасибо!

+1

'tempdict1 = dict1' не создает копию. См. Дубликат о том, как правильно создать копию. –

ответ

1

Это потому, что вы копируете ссылку-го словаря, а не самого словаря. Вместо того, чтобы:

tempdict1 = dict1 

вы должны написать

tempdict1 = dict(dict1) 

создать копию, которую можно изменять независимо друг от друга.

+1

предпочитают использовать ['deepcopy'] (https://docs.python.org/2/library/copy.html#copy.deepcopy) , это поможет только на одном уровне словаря. 'd1 = {'a': {'b': 3}, 'c': 4}; d2 ['a']. Pop ('b')' также изменит объект 'd1' – ShmulikA

+0

Да, конечно бит, так как в этом примере показаны строки и строки неизменны, есть «второй уровень», так сказать. –

Смежные вопросы