Python的dicts列表:如何动态操作?

时间:2013-09-01 14:59:10

标签: python list dictionary

是否有可能制作一个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和行。我需要类似指针的行为)

3 个答案:

答案 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}}