Python 列一张“a”的清单;大师;词典

Python 列一张“a”的清单;大师;词典,python,list,dictionary,copy,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()似乎也不起作用。copy应该起作用 l

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

我的问题是,;除了使用deepcopy()之外,还有其他推荐的方法吗

我知道这不能正常工作:

    l = []
    d = {}
    d['key'] = 4
    l.append(d)
    d['key'] = 5
    l.append(d)
它给出:

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


使用简单的copy()似乎也不起作用。

copy
应该起作用

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

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

您正在将对同一对象的引用附加到两个列表中,因此当您更改
“key”
的值时,您将在两个列表中更改它。如果需要单独引用,则需要在追加之前复制词典,使用
dict.copy
功能:

l = []
d = {}
d['key'] = 4
l.append(d.copy())
d['key'] = 5
l.append(d.copy())
如果需要深度复制,可以使用
复制
库:

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

函数如何根据传入函数的参数创建一个新的字典?这不是真正的问题-起始字典有3个基本键,它们的值作为字典,我只更改了1或2个子元素,并在每个元素中添加了第4个键,该键具有深度嵌套的字典列表,但基本信息是相同的但是,如果字典是多层次的,我认为它不能正常工作-我尝试了这个例子,它似乎工作了,我会接受这个例子,但我似乎记得一些关于更深层次的引用问题,除非你做了一个深拷贝。