python3 append 词典元素出错 ?

编程入门 行业动态 更新时间:2024-10-24 20:15:01
本文介绍了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 词典元素出错 ?

本文发布于:2023-11-15 16:53:45,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1596257.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:词典   元素   append

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!