(使用 Python 2.7)
我正在尝试创建模板对象的副本以供稍后填写。为简单起见,我尝试这样做:
template={'thing1':'','thing2':'','thing3':''}
for number in some_list:
pile[number]=template
但后来当我这样做时:
pile[1]['thing1']='blahblah'
它还导致:
print pile[2]['thing1']
'blahblah'
print template['thing1']
'blahblah'
我想要的是为了
pile[1]['thing1']='blahblah'
让 pile[2] 一个人呆着,这样
print pile[2]['thing1']
''
我知道问题是当我说
pile[number]=template
这意味着 pile[1] 是模板,而 pile[2] 是模板。(我今天才完全意识到这一点,而我正在研究这个......我对自己重复了好几次,因为实现和它的含义慢慢地沉没了......这就是 python 的工作原理,嗯?我觉得我刚刚加入python 俱乐部。我是从 MATLAB 开始的,所以不要对我太粗鲁。)
所以我想可能有两种方法可以解决这个问题 - 一种涉及某种与原始对象无关的对象的复制,或者类似的东西,并且可能非常简单明了。也许还有另一种特定于dicts的方法,比如初始化键或其他东西。我对第一种答案最感兴趣,因为这将有助于完善我对 python工作原理的理解,但第二种答案也会很好。谢谢 :)