繁体   English   中英

Python随着原始变量的更改,列表中的附加元素也会更改

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM