python列表的循环遍历使用教程(Python中使用遍历在列表中添加字典遇到的坑)
python列表的循环遍历使用教程
Python中使用遍历在列表中添加字典遇到的坑
|
""" 已知列表li = [{"key": 5}, {"key": 9}, {"key": -1}, {"key": 4}] , 定义一个函数,将该列表按照其元素的value 值进行排序,并输出结果 """ |
思路很清晰,新建一个列表,然后遍历取出字典的值加入到新的列表中,再通过遍历,赋值字典,使用append方法依次添加到列表,这样就是一个按照value值排续.于是有了下面的代码:
|
li = [{ "key" : 5 }, { "key" : 9 }, { "key" : - 1 }, { "key" : 4 }] def fun(li): li_1 = [] # 接收value值 li_2 = [] # 接收新的字典 dict_1 = {} for i in range ( len (li)): li_1.append(li[i][ "key" ]) li_1.sort() # 排序 for i in li_1: dict_1[ "key" ] = i print (dict_1) li_2.append(dict_1) return li_2 print (fun(li)) |
但是运行的结果却是:
[{'key': 9}, {'key': 9}, {'key': 9}, {'key': 9}]
很明显,取值被最后一个传入value的9全部替换了.为什么会这样呢?
开始怀疑是不是和字典中重复赋值给"key"有关,但是也不应该啊,每次遍历的时候就是已经把字典append到list中去了啊!
于是使用print(id(dict_1)),查看内存信息,发现这个现象:
2874566784272
2874566784272
2874566784272
2874566784272
居然都是同一地址!!再查看list中的每个元素地址:
|
for i in li_2: print ( id (i)) |
结果:(print(id(dict_1))也打印了)
2501747356944
2501747356944
2501747356944
2501747356944
2501747356944
2501747356944
2501747356944
2501747356944
于是明白了,因为每次添加的都是同一个内存到list中去了,dict_1每次写入的时候改变了内存中的value,但是地址不变,即是,创建了一次内存空间,只会不断的改变value了.完善方法:每次遍历时候创建一个新的dict_1.
代码:
|
def fun(li): li_1 = [] li_2 = [] for i in range ( len (li)): li_1.append(li[i][ "key" ]) li_1.sort() # 排序 for i in li_1: dict_1 = {} # 每次遍历时创建一个新的内存 dict_1[ "key" ] = i li_2.append(dict_1) return li_2 print (fun(li)) |
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对开心学习网的支持。如果你想了解更多相关内容请查看下面相关链接
原文链接:https://blog.csdn.net/wu0che28/article/details/79924360
- python3d旋转特效(python实现小球弹跳效果)
- python计算1到10的阶乘的和(python计算阶乘和的方法1!+2!+3!+...+n!)
- python学生信息管理系统教程(学生信息管理系统Python面向对象版)
- python零基础实战项目(十个Python练手的实战项目,学会这些Python就基本没问题了推荐)
- python里字典常用方法(Python使用字典的嵌套功能详解)
- python列表精讲33节(Python列表知识应知应会)
- python如何抓取公众号文章(python爬取微信公众号文章的方法)
- python创建一个xls文件(Python XlsxWriter模块Chart类用法实例分析)
- python中字符串常用函数或方法(Python3.5字符串常用操作实例详解)
- python3json序列化(Python3.5 Json与pickle实现数据序列化与反序列化操作示例)
- python怎么自动刷抖音(python实现抖音点赞功能)
- python怎么抽取微信图片(Python 一键制作微信好友图片墙的方法)
- python实例教程(Python魔法方法详解)
- python3和python2 兼容(Python2和Python3的共存和切换使用)
- 浅谈Python3中strip()、lstrip()、rstrip()用法详解(浅谈Python3中strip、lstrip、rstrip用法详解)
- python3.x base64怎么加密解密(python3.x实现base64加密和解密)
- 哪版孙悟空最萌 黄渤躺萌了(哪版孙悟空最萌)
- 融入小人物的喜怒哀乐,黄渤饰演的角色为什么让人观看时欲罢不能(融入小人物的喜怒哀乐)
- 《极限挑战》深访都市夜归人,夜间打工者体验,黄磊录完憔悴了(极限挑战深访都市夜归人)
- Google 推出了一个游戏生成器,让不会编程的你也能自己设计游戏(推出了一个游戏生成器)
- 二胎家庭老大爱闹情绪,用这招很有效(二胎家庭老大爱闹情绪)
- 一个30岁男人外遇失败的全过程(一个30岁男人外遇失败的全过程)
热门推荐
- laravel事件返回错误数据(laravel Validator ajax返回错误信息的方法)
- 香港云服务器租赁流程(租用香港云服务器的三大注意事项)
- 云主机有哪些劣势(云主机怎么使用?用途有哪些?)
- 如何修改serv-u主页信息(Serv-U安装使用图文教程)
- git log命令大全(每天学一分钟使用Git服务器实现查看Debug分支及修复)
- event.preventDefault方法的使用
- 织梦安装程序(windowsxp下织梦后台如何安装)
- pythonexcel报表实例(对python生成业务报表的实例详解)
- css3实现120度的箭头(使用css实现任意大小、任意方向和任意角度的箭头示例)
- python udp通信(Python socket模块实现的udp通信功能示例)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9