位置: 编程技术 - 正文

Python中遍历字典过程中更改元素导致异常的解决方法(Python中遍历字典)

编辑:rootadmin

推荐整理分享Python中遍历字典过程中更改元素导致异常的解决方法(Python中遍历字典),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python3遍历字典,python如何遍历字典的键值,python3遍历字典,Python中遍历字典,python中遍历字典中的所有键值对,Python中遍历字典,python中遍历字典中的所有键,Python中遍历字典,内容如对您有帮助,希望把文章链接给更多的朋友!

先来回顾一下Python中遍历字典的一些基本方法:脚本:

执行结果:

嗯,然后我们进入“正题”--

一段关于Python字典遍历的“争论”....先摘抄下:

其实这个问题本来很简单,就是说如果遍历一个字典,但是在遍历中改变了他,比如增删某个元素,就会导致遍历退出,并且抛出一个dictionary changed size during iteration的异常.解决方法是遍历字典键值,以字典键值为依据遍历,这样改变了value以后不会影响遍历继续。但是下面又有一位大神抛出高论:

Python中遍历字典过程中更改元素导致异常的解决方法(Python中遍历字典)

首先,python 是推荐使用迭代器的,也就是 for k in adict 形式。其次,在遍历中删除容器中的元素,在 C++ STL 和 Python 等库中,都是不推荐的,因为这种情况往往说明了你的设计方案有问题,所有都有特殊要求,对应到 python 中,就是要使用 adict.key() 做一个拷贝。最后,所有的 Python 容器都不承诺线程安全,你要多线程做这件事,本身就必须得加锁,这也说明了业务代码设计有问题的.

但由“遍历中删除特定元素”这种特例,得出“遍历dict的时候,养成使用 for k in d.keys() 的习惯”,我觉得有必要纠正一下。在普通的遍历中,应该使用 for k in adict。另外,对于“遍历中删除元素”这种需求,pythonic 的做法是 adict = {k, v for adict.iteritems() if v != 0} 或 alist = [i for i in alist if i != 0]

这个写法让我眼前一亮:怎么还有这个语法?再仔细一看,他可能是这个意思:

不知道对不对。因为这个写法一开始让我猛然想到三元操作符,仔细一看才发现不是,以前Goolge到有个解决方案

val>是个逻辑表达式,返回0或者1,刚好作为前面那个元组的ID来取值,实在是太妙了。。。不过在Google的资料里面还有一个版本

后来发帖在华蟒用户组(中文Python技术邮件列表)中提到后众多大神解答如下:

如果大于Python>=2.7还可以用这个写法:

python基于phantomjs实现导入图片 基于的phantomjs的自动化,会出现1.flash不支持2.部分基于view的按钮点不到,部分按钮是基于flash的(尤其是在于上传按钮)browser.find_element_by_xpath(".//*[@name='SW

Phantomjs抓取渲染JS后的网页(Python代码) 最近需要爬取某网站,无奈页面都是JS渲染后生成的,普通的爬虫框架搞不定,于是想到用Phantomjs搭一个代理。Python调用Phantomjs貌似没有现成的第三方库

python爬取job中hr的邮箱 本文实例为大家分享了python爬取job中hr的邮箱具体代码,供大家参考,具体内容如下#encoding=utf8importurllib2importcookielibimportreimportlxml.htmlfrom_astimportTryExcept

标签: Python中遍历字典

本文链接地址:https://www.jiuchutong.com/biancheng/386169.html 转载请保留说明!

上一篇:Python安装使用命令行交互模块pexpect的基础教程(python安装包的命令)

下一篇:python基于phantomjs实现导入图片(python基于django的项目)

  • 小规模30万免增值税1点怎么申报税款
  • 留抵税额做进项转出怎么做分录
  • 个人卖给公司车需要什么手续
  • 银行承兑的商业汇票计入什么科目
  • 差额征税专用发票如何开
  • 预提工资与计提工资的区别
  • 发票遗失如何报销
  • 企业注销了,报表的银行存款还有余额
  • 进销的单位不一样怎么办
  • 商场做促销
  • 金税盘付费
  • 一般纳税人税控维护费怎么填报
  • 农产品销售发票是什么?
  • 加油费发票7月1日开具
  • 转让商业承兑汇票显示银行拒绝交易
  • 土地+n
  • 成本费用分配的原则方法
  • 消耗性生物资产与生产性生物资产的区别
  • 工会经费的开支必须取得发票么
  • 生产成本属于什么会计要素
  • 发票上不小心印上作废两个字怎么办
  • 流动资金借款是一般借款还是专门借款
  • 法律诉讼费计入什么会计科目
  • 暂估在建工程会计科目
  • 企业买金税盘做什么科目
  • 怎么获得2021
  • 银行收到退款怎么回复
  • linux文件权限控制
  • 2020年前端面试
  • vue数据实时更新
  • php常见字符串函数
  • 其他综合收益含税吗
  • 虚开增值税怎么查到的
  • js点击图片跳转页面
  • 残保金工资总额是计提还是实发
  • phpcms生成html
  • 一般纳税人申请条件
  • 绩效工资交个人所得税吗
  • 费用报销的程序是什么
  • 增值税发票系统客服电话
  • 分公司可以在银行贴现吗
  • 国有控股企业和国有参股企业的区别
  • 所得税纳税年度
  • 结构性存款现金流量折现法
  • 质保期内出现质量问题,一直没有修复
  • 逾期未认证的增值税发票处理办法
  • 预提成本费用的会计分录
  • 长期合同价格怎么定
  • 股东退股如何清算
  • 银行对账单和银行流水的区别
  • 建账时应考虑的问题包括下列哪三项
  • 清产核资评估报告
  • MySQL replace into 语句浅析(二)
  • xp系统和2003系统的异同
  • ubuntu怎么设置开机自启动程序
  • rsync如何同步隐藏文件和排除文件?rsync同步隐藏文件和排除文件的方法
  • windows字体不显示
  • imac 5k屏幕参数
  • ubuntu20 配置静态ip
  • CentOS系统中与时间的相关命令详解
  • linuxnamespace入门
  • win7无线网络连接不上怎么解决方法
  • win10安装字体的操作步骤
  • linux用户登录
  • windows7 远程连接
  • js创建类对象的方法
  • css中文手册
  • js常用排序算法
  • 移动手机指令
  • AngularJS中controller控制器继承的使用方法
  • 使用灭火器人要站在上风口还是下风口
  • node搭建项目
  • 《JavaScript高级程序设计》pdf链接
  • javascript教程完整版
  • python类中的函数必须加self吗
  • 蒲河大集是什么多少号沈阳大集各个大集多少号
  • 河南农村社保查询个人账户查询系统
  • 现行的企业所得税率是多少
  • 遏制新增
  • 北京税务迁址流程是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设