是否有可能制作一个dicts列表,当我更改dicts的内容时,包含列表会反映它(尽管只是存储在原始字典的副本中)?
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}]
(我的目标是有一个类似于2D的表结构,可以水平和垂直导航,并避免在每个新值输入任何单元格后刷新cols和行。我需要类似指针的行为)
答案 0 :(得分:2)
您可以使用update()
就地更新a
,而不是重新分配:
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}] # <--
答案 1 :(得分:1)
当你这样做时
a = {1: 6, 2: 7}
您只需重新分配变量a
,因此它将指向新的dict,而变量c
根本不会被修改。以前的a
值仅作为c
的第一个元素。
因此您必须更改c
的元素,例如:
c[0] = {1: 6, 2: 7}
或更改a
的元素(但不能重新分配a
):
a[1], a[2] = 6, 7
或
a.update({1:6, 2:7})
答案 2 :(得分:0)
您可以在适当的位置修改a
,而不是重新分配a[1] = 6
a[2] = 7
。
{{1}}