IntelliJ IDEA история локальных изменений для конкретной линии

Добавление к ответу Кеннетма. Когда вы делаете мелкую копию parent.copy () , создается новый словарь с одинаковыми ключами, но значения не копируются, на которые они ссылаются. Если вы добавите новое значение в parent_copy он не будет влиять на parent , поскольку parent_copy является новым словарем, а не ссылкой.

parent = {1: [1,2,3]}
parent_copy = parent.copy()
parent_reference = parent
print id(parent),id(parent_copy),id(parent_reference)
#140690938288400 140690938290536 140690938288400
print id(parent[1]),id(parent_copy[1]),id(parent_reference[1])
#140690938137128 140690938137128 140690938137128
parent_copy[1].append(4)
parent_copy[2] = ['new']
print parent, parent_copy, parent_reference
#{1: [1, 2, 3, 4]} {1: [1, 2, 3, 4], 2: ['new']} {1: [1, 2, 3, 4]}

Значение хэша (id) ] parent [1] , parent_copy [1] идентичны, что подразумевает [1,2,3] родителя [1] и parent_copy [ 1] , хранящийся при идентификаторе 140690938288400.

Но хэш из родительского родителя и parent_copy отличается тем, что подразумевается, что это разные словари и parent_copy - это новый словарь со значениями, относящимися к значениям родителя

1
задан Shivaraj 17 January 2019 в 18:04
поделиться