本文介绍了python3 append 词典元素出错 ?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
定义了一个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看一下。
更多推荐
python3 append 词典元素出错 ?
发布评论