[英]Python The appended element in the list changes as its original variable changes
所以这是我在python中尝试做的抽象代码。
list_ = []
dict_ = {}
for i in range(something):
get_values_into_dict(dict_)
list_.append(dict_)
dict_.clear()
print list_
这里当我清除dict_时,显然列表中的所有元素都被删除了,因为它们只是映射到变量dict_的地址。
我想要的是复制dict_的实例,以便我可以将它存储在list_中。
有人可以解释一下将每个循环中获得的dict存储到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_
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.