Python3中使用append添加字典元素出现问题,python3append,定义了一个copy函数,
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看一下。
编橙之家文章,
相关内容
- python tornado中使用parse_command_line(final=False) final有何作用
- Python 《笨办法学python》38题keyerror问题,,我在敲《笨办
- Python jinja2转义img、code之类标签转义有何方法,pythonj
- 模板渲染前端js和后端python哪个更好,前端js后端pytho
- Python安装bloomfilter过滤器报fatal erroe错误怎么解决,bl
- python如何解决不同时区服务器时间问题,python时区,我们
- python xlrd模块 获得单元格格式信息,pythonxlrd,我想获取
- virtualenv中的包除了pip 、easy_install外,还有其它安装方法
- Python想创建一个相对安全的unique session id应该怎么写,
- ansible tower开发前端框架是用什么呢?,ansibletower,问下
评论关闭