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
- python环境怎么安装pip(python2.7 安装pip的方法步骤管用)
- python数据结构全攻略(详解python数据结构和算法)
- python浮点型和整数型(实例讲解Python中浮点型的基本内容)
- opencv 图像匹配python(OpenCV+Python识别车牌和字符分割的实现)
- python编程加密解密(python实现AES加密解密)
- python生成效果图(python如何制作缩略图)
- python爬虫爬取网页信息教程(python爬虫爬取微博评论案例详解)
- python3.7标准库官方手册(Python3.7 dataclass使用指南小结)
- pythonflask系列教程(Python安装Flask环境及简单应用示例)
- python中mat文件怎么读(Python第三方库h5py_读取mat文件并显示值的方法)
- pythonsvr时序预测(利用Python半自动化生成Nessus报告的方法)
- python中的reload(搞清楚 Python traceback的具体使用方法)
- python自学编程笔记(Python 编程速成推荐)
- python将一个字符串逆序输出(Python字符串逆序的实现方法一题多解)
- python3字符串怎么操作(Python3字符串encode与decode的讲解)
- python转图片为字符图(Python实现图片转字符画的代码实例)
- 七夕的寓意(七夕的寓意)
- 苏志燮赵恩静结婚,韩国四大公共财产变三人,这么快就有替补了(苏志燮赵恩静结婚)
- 《内在美》后,一大波新韩剧来袭,李钟硕朴信惠宋慧乔玄彬回归(一大波新韩剧来袭)
- 给孩子选购保温杯,注意这4个步骤,比颜值更重要(给孩子选购保温杯)
- 保温好 容量大 颜值高 保温杯你给娃娃买对了吗(保温好容量大颜值高)
- 《道德经》 人生避开骄狂,才能免去祸患(道德经人生避开骄狂)
热门推荐
- python抖音视频收集(python制作抖音代码舞)
- css选择器常用的用法和说明(针对IE6的一些CSS Hack编写时的注意点小结)
- html5新增特性(总结html5自定义属性有哪些)
- php7.4编译安装(PHP7.3.10编译安装教程)
- python里import的是什么(python中import与from方法总结推荐)
- iis网站提示401 未授权:由于凭据无效,访问被拒绝
- 企业网站服务器怎么选(企业网站服务器租用几个常见问题)
- 多个tomcat实例配置文件(tomcat单机多实例的实现)
- pythonlist列表讲解(Python中将两个或多个list合成一个list的方法小结)
- 常见的浏览器兼容性测试工具
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9