在python中有一个dict元素可以引用另一个吗? F.E. :
h = { 'a' : 1, 'b' : 2 }
h['c'] = \h[a]
print h['c']
1
h['a'] = 12
print h['c']
12
我明白了:
In [382]: h = { 1: {6:7}, 3:4 }
In [383]: h
Out[383]: {1: {6: 7}, 3: 4}
In [384]: h[5]=h[1]
In [385]: h
Out[385]: {1: {6: 7}, 3: 4, 5: {6: 7}}
In [386]: h[1][6] = 13
In [387]: h
Out[387]: {1: {6: 13}, 3: 4, 5: {6: 13}}
尝试自下而上构建树。
答案 0 :(得分:3)
是的,您当然可以将字典中的元素指向另一个元素。当您将h['c']
分配给h['a']
时,它们现在共享相同的内存位置:
h = { 'a' : 1, 'b' : 2 }
h['c'] = h['a']
h['c'] is h['a']
True
然而,Python中的许多类型都称为 immutable 。它们一旦创建就无法更改。 int
是其中一种类型(str
,tuple
和其他类型)。因此,一旦您更改h['a']
,h['c']
就不再指向它,因为它现在是另一个对象。
h['a'] = 12
h['c'] is h['a']
False
但是,如果h['a']
是可变类型(包括list
,dict
和其他类型),则当您指向h['c']
时h['a']
和变异h['a']
,此更改也将反映在h['c']
中,因为h['c']
指向h['a']
所在的同一对象。
以下是使用列表的一个非常简单的示例:
dct = {'x': [1,2,3]}
dct['y'] = dct['x']
dct['y'] is dct['x']
True
dct['x'][0] = 5
dct['y'] is dct['x']
True
dct
{'x': [5, 2, 3], 'y': [5, 2, 3]}