我有一个原型字典,我想用它作为附加到列表的基础。 我想在字典中更改一个或多个值,然后将其捕获为列表的元素。
我的问题是这个;有没有任何其他推荐的方法来做这个使用deepcopy()。
我知道这不能正常工作:
l = []
d = {}
d['key'] = 4
l.append(d)
d['key'] = 5
l.append(d)
它给出了:
l = [{'key':5},{'key':5}]
它似乎也不能使用简单的copy()
答案 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}]