2013-11-25 4 views
1

У меня есть два кода, в которых словарь является членом другого. В первом коде словаря «а» упоминается в словаре «B», используя {}:Ссылка на словари в Python

a = {'one': [1, 1]} 
b = {'member': a} 
print b 
a = {'one': [2, 2]} 
print b 

Во втором коде словаря «а» упоминается в словаре «B», используя []:

a = {} 
a['one'] = [1, 1] 
b = {} 
b['member'] = a 
print b 
a['one'] = [2, 2] 
print b 

Может кто-нибудь объяснить мне, почему, вторая печать б в первом коде возвращается:

{'member': {'one': [1, 1]}} 

, тогда как во втором коде результат для того же отпечатка:

{'member': {'one': [2, 2]}} 

С уважением, Fran

ответ

1

В первом коде

a = {'one': [2, 2]} 

точки и название a на совершенно новый словарь, поэтому он больше не указывает на словарь, хранящегося в b (который неизменен). Во втором

a['one'] = [2, 2] 

обновляет существующий словарь, на который ссылается a, который ссылается в b тоже. Это различие не связано с созданием b как

b = {} 
b['member'] = a 

и

b = {'member': a} 

дают точно такой же результат.

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