列出一个" master"字典

时间:2014-06-23 13:35:31

标签: python list dictionary copy

我有一个原型字典,我想用它作为附加到列表的基础。 我想在字典中更改一个或多个值,然后将其捕获为列表的元素。

我的问题是这个;有没有任何其他推荐的方法来做这个使用deepcopy()。

我知道这不能正常工作:

    l = []
    d = {}
    d['key'] = 4
    l.append(d)
    d['key'] = 5
    l.append(d)

它给出了:

l = [{'key':5},{'key':5}]

它似乎也不能使用简单的copy()

2 个答案:

答案 0 :(得分:1)

您要将同一对象的引用附加到两个列表,因此当您更改"key"的值时,您可以在两个列表中更改它。如果您想要使用dict.copy函数进行单独的引用,则需要在附加之前复制字典:

l = []
d = {}
d['key'] = 4
l.append(d.copy())
d['key'] = 5
l.append(d.copy())

如果您需要深层副本,可以使用copy库:

import copy
l = []
d = {}
d['key'] = 4
l.append(copy.deepcopy(d))
d['key'] = 5
l.append(copy.deepcopy(d))

答案 1 :(得分:0)

copy应该有用。

l = []
d = {}
d['key'] = 4
l.append(d)
d = d.copy()
d['key'] = 5
l.append(d)

结果:

[{'key': 4}, {'key': 5}]