Python列表中的附加元素随其原始变量的变化而变化

因此,这是我要在python中执行的操作的抽象代码。

list_ = []

dict_ = {}

for i in range(something):

get_values_into_dict(dict_)

list_.append(dict_)

dict_.clear()

print list_

在这里,当我清除dict_时,显然list_中的所有元素都被删除,因为它们只是地址映射到变量dict_。

我想要的是复制dict_的实例,以便可以将其存储在list_中。

有人可以解释一下在每个循环中将获取的字典存储到list_中的方法吗?提前致谢。

回答:

您正在将对字典的引用添加到列表中,然后清除字典 本身 。这将删除字典的内容,因此对该字典的所有引用将显示该字典现在为空。

将其与创建两个指向同一词典的变量进行比较:

>>> a = {'foo': 'bar'}

>>> b = a

>>> b

{'foo': 'bar'}

>>> a.clear()

>>> b

{}

字典是可变的;您更改对象本身。

在循环中创建一个新字典,而不是清除并重用一个字典:

list_ = []

for i in range(something):

dict_ = {}

get_values_into_dict(dict_)

list_.append(dict_)

print list_

或者更好的是,get_values_into_dict()返回 一个字典来代替:

list_ = []

for i in range(something):

dict_ = return_values_as_dict()

list_.append(dict_)

print list_

以上是 Python列表中的附加元素随其原始变量的变化而变化 的全部内容, 来源链接: utcz.com/qa/400330.html

回到顶部