写代码的明哥|  作者Python编程时光|  来源

本篇选自 Python黑魔法指南 -> 第五章 -> 第21节

Github链接: https://github.com/iswbm/magic-python


当一个字典里没有某个 key 时,此时你访问他是会报 KeyError 的。

>>> profile={}>>> profile["age"]Traceback (most recent call last):  File "", line 1, in KeyError: 'age'

这里有一个小技巧,使用 collections 的 defaultdict 方法,可以帮你处理这个小问题,当你访问一个不存在的 key 时,会返回默认值。

defaultdict 接收一个工厂方法,工厂方法返回的对象就是字典的默认值。

常用的工厂方法有,我们常见的 int,str,bool 等

>>> a=int()>>> a0>>> >>> b=str()>>> b''>>>>>> c=bool()>>> cFalse

因为 defaultdict 可以这样子用。

>>> import collections>>> profile=collections.defaultdict(int)>>> profiledefaultdict(<class 'int'>, {})>>> profile["age"]0>>> profile=collections.defaultdict(str)>>> profiledefaultdict('str'>, {})>>> profile["name"]''

当然既然是工厂方法,你也可以使用 lambda 匿名函数来实现自定义的效果,比如我们使用 str 就会设置一个空字符串,但这并不是我想要的,我想要的是设置一个其他字符串,你就可以像下面这样子。

>>> info=collections.defaultdict(lambda: "default value")>>> infodefaultdict(lambda> at 0x10ff10488>, {})>>>>>> info["msg"]'default value'

长按扫码关注一起学Python------------------如果觉得有点用的话,请毫不留情地素质三连吧,分享、点赞、在看、收藏,我不挑,因为这将是我写作更多优质文章的最强动力。

往期精选(?猛戳可查看)

1、用 Python 写个消消乐小游戏2、7张思维导图带你掌握 “Python学习路线”3、整理了我开始分享学习笔记到现在超过250篇优质文章,涵盖数据分析、爬虫、机器学习等方面,别再说不知道该从哪开始,实战哪里找了

as运行时不报错却闪退_字典访问不存在的key 时,如何才能不报错?相关推荐

  1. 关于只有两行报错的闪退( E/ActivityManager: Found activity ActivityRecord)

    关于只有两行报错的闪退 有点仓促,不过发现了新的报错.就把首条博客写了. 环境 Android Studio 2.3.3 Java1.8 对应开发版本是Android 7.0 12-21 21:27: ...

  2. 双击bat脚本运行python脚本,bat出现闪退的解决方法

    前言 本文是该专栏的第10篇,后面会持续分享python的各种干货知识,值得关注. 最近粉丝朋友留言,双击bat脚本出现闪退.之前,笔者写过该问题的解决方法(使用bat脚本运行python脚本,bat ...

  3. windows脚本命令闪退_批处理闪退、运行中断等问题的处理

    本文最后更新于:2019.4.3 因为我只会一些批处理代码,所以我的"局域网共享一键修复"等软件就都做成了批处理程序(后缀名为.bat)供大家使用.有些网友反馈:右键运行批处理,会 ...

  4. Android 页面跳转时发生双击导致app闪退的解决方案

    在页面跳转时双击双击,查阅了各种资料 尝试一:从双击事件出发,避免双击事件 例如重写onClick事件 public abstract class NoDoubleClickListener impl ...

  5. java游戏管理器 闪退_手游频繁崩溃”闪退”? 从程序上找原因

    文 / 网易 Tjay(QA) 作为玩家,当游戏crash的时候是什么心情,如果这个游戏玩起来还不错的话,那我可能还会打开第二次,如果这个游戏一般的话我可能直接怒删了.当多次出现闪退crash的时候, ...

  6. apk闪退_安卓手机经常闪退怎么办?安卓手机闪退解决办法

    平时我们在使用手机的时候可能会发现,安卓手机使用的时间长一点就可能会出现手机闪退的现象,那么如何来解决手机闪退的问题呢?今天,刷机帮小编就为大家分享一篇如何解决手机闪退问题的教程,大家可以根据自己的实 ...

  7. arcgis运行python脚本时闪退_关于ArcMap中打开ArcToolbox导致闪退的解决办法

    最近好久不用ArcGis的小编要用到ArcMap去发送一个GP服务,发现按照套路打开ArcMap点击ArcToolbox时,发生了ArcMap的闪退现象,几经周折终于解决了问题. 希望也遇到这类问题的 ...

  8. spyder 运行时闪退_记一次spyder打不开(闪退)之后,心累的恢复历程

    问题描述:anacondaprompt能正常打开,spyder打开是蛛网界面能出来,但蛛网界面之后就是白屏状态,两三秒之后就闪退了,anaconda 上显示的错误是7692:29420:1108/16 ...

  9. 双系统gazebo闪退_记录Ubuntu16.04下PX4联合Gazebo仿真时遇到的问题与解决方法

    一.arm-none-eabi-gcc版本问题 在Ubuntu16.04中使用sudo apt-get install gcc-arm-none-eabi命令会自动安装默认版本(gcc version ...

最新文章

  1. 人脸服务器如何与门禁系统对接,人脸识别门禁系统终端设备接口说明
  2. 北风设计模式课程---深入理解[代理模式]原理与技术
  3. 软件架构师的工作职责
  4. pythondocx模板_使用python-docx-template修改word文档
  5. java输出变量_Java笔记1: 输入输出与变量常量
  6. pandas numpy处理缺失值,none与nan比较
  7. 定时任务的选型及改造
  8. String.format(%03d, i)在数字前面补零
  9. ichart.js绘制虚线 ,平均分虚线
  10. VMware虚拟机中Ubuntu16.04系统下通过MVS运行海康威视工业相机
  11. 股票大作手操盘术---到手的利润
  12. 以太坊蜜罐智能合约分析
  13. Spring框架总结(8)
  14. 怎么导出微信语音【亲测有效】
  15. java练习题_循环控制_成绩
  16. 修改滚动条样式的方法
  17. AltiumDesigner
  18. 面试 -- 操作系统与计算机网络
  19. java 菜刀_菜刀Jsp脚本增强版
  20. js中的boolean原始类型和Boolean引用类型

热门文章

  1. Windows Hook机制(转贴一)
  2. 百度小程序html转码,百度小程序全局配置
  3. editplus public class自动补齐大括号问题破解
  4. 信息学奥赛一本通 1128:图像模糊处理 | OpenJudge NOI 1.8 13:图像模糊处理
  5. 动态规划 —— 线性 DP —— 最大和问题
  6. 信息学奥赛C++语言:重组
  7. 17 WM配置-策略-激活存储区搜索(Storage Section Search)
  8. html视频鼠标移除不播放,html - 在Mouseover上播放Gif并在鼠标移除时暂停Gif而不替换图像? - 堆栈内存溢出...
  9. android案例_Android实训案例——计算器的运算逻辑
  10. python:文件打包为exe