Python3中使用append添加字典元素出现问题,python3append,定义了一个copy函数,


定义了一个copy函数,将nums列表中的词典元素,复制到a列表中。
打印出的结果却是
[{'val': '1', 'name': '1'}]
[{'val': '2', 'name': '2'}, {'val': '2', 'name': '2'}]
[{'val': '3', 'name': '3'}, {'val': '3', 'name': '3'}, {'val': '3', 'name': '3'}]
a.append(tempdict)将最后一次添加的元素重复添加多次。代码如下

def copy():

a = []tempdict = dict.fromkeys(('val','name'),'')nums = [{'val':'1','name':'1'},{'val':'2','name':'2'},{'val':'3','name':'3'}]for eachnum in nums:    tempdict['val'] = eachnum['val']    tempdict['name'] = eachnum['name']    a.append(tempdict)    print(a)    

if name == '__main__':

getsum()

题主,你的tempdict始终是同一个字典对象,你每次对它进行赋值,实际上都是在修改同一个字典,所以最后虽然append到列表里成了三个列表元素,但三个字典中的key,value都指向的是内存空间中的同一个key值和value值,这也就是为什么循环每进行一次,值就变一次。不知道我有没有解释清楚.. 你可以在循环前和循环中都打印一下tempdict的id看一下。

编橙之家文章,

评论关闭