从另一个引用dict元素?

时间:2018-06-03 20:24:48

标签: python dictionary reference

在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}}

尝试自下而上构建树。

1 个答案:

答案 0 :(得分:3)

是的,您当然可以将字典中的元素指向另一个元素。当您将h['c']分配给h['a']时,它们现在共享相同的内存位置:

h = { 'a' : 1, 'b' : 2 }
h['c'] = h['a']
h['c'] is h['a']
True

然而,Python中的许多类型都称为 immutable 。它们一旦创建就无法更改。 int是其中一种类型(strtuple和其他类型)。因此,一旦您更改h['a']h['c']就不再指向它,因为它现在是另一个对象。

h['a'] = 12
h['c'] is h['a']
False

但是,如果h['a']可变类型(包括listdict和其他类型),则当您指向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]}