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