Python dict列表:如何动态操作?

2024-04-19 11:08:48 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有可能制作一个dict列表,这样当我更改dict的内容时,包含的列表会反映它(尽管只是存储在原始dict的副本中)?你知道吗

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表式结构,并避免在任何单元格中输入每个新值后刷新列和行。我需要指针式的行为)


Tags: 内容目标列表副本水平结构dict新值
3条回答

您可以使用^{}就地更新a,而不是重新分配它:

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

(另见:^{}


使用您的完整示例:

>>> 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}]  # < 

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

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

当你这么做的时候

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

相关问题 更多 >