玩蛇网提供最新Python编程技术信息以及Python资源下载!

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看一下。

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd14106.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年05月15日 - 09时07分36秒 发布自玩蛇网

您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容
我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules