0

是否可以制作一个字典列表,当我更改字典的内容时,包含列表会反映它(尽管只是存储在原始字典的副本中)?

a = {1: 1, 2, 2}
b = {3: 3, 4: 4}
c = [a, b]
c
[{1: 1, 2, 2}, {3: 3, 4: 4}]
a = {1: 6, 2: 7}
c
[{1: 1, 2, 2}, {3: 3, 4: 4}]

并不是

[{1: 6, 2: 7}, {3: 3, 4: 4}]

(我的目标是拥有一个可以水平和垂直导航的二维表格结构,并避免在任何单元格中输入每个新值后刷新列和行。我需要类似指针的行为)

4

3 回答 3

2

您可以a使用就地更新,update()而不是重新分配它:

a.clear()
a.update({1: 6, 2: 7})

(另见clear():)


使用您的完整示例:

>>> a = {1: 1, 2: 2}
>>> b = {3: 3, 4: 4}
>>> c = [a, b]
>>> c
[{1: 1, 2: 2}, {3: 3, 4: 4}]
>>> a.clear()
>>> a.update({1: 6, 2: 7})
>>> c
[{1: 6, 2: 7}, {3: 3, 4: 4}]  # <--
于 2013-09-01T15:01:37.977 回答
1

当你这样做

a = {1: 6, 2: 7}

你只是重新分配变量a,所以它会指向新的字典,变量c根本不会被修改。的前一个值a仅作为 的第一个元素c

因此,您必须更改 的元素c,例如:

c[0] = {1: 6, 2: 7}

a或更改(但不重新分配a)的元素:

a[1], a[2] = 6, 7

或者

a.update({1:6, 2:7})
于 2013-09-01T15:36:39.460 回答
0

a您可以就地修改它,而不是重新分配。

a[1] = 6
a[2] = 7
于 2013-09-01T15:01:28.663 回答