通常我们在操作字典时,如果读取的键未被初始化,则会抛出KeyError的错误,这个是我们都很熟悉的。那么一般的解决方式是使用异常处理或者是调用字典的get方法来避免出现这个异常。

可以看到,这两种写法都比较繁琐,第二种方式虽然没有增加什么代码量,但比起直接使用dict[key]这种方式访问还是稍显麻烦,并且每次读取一个key的时候都要这样写,也不优雅。

为了解决这个问题,现在我们有请今天的"猪脚"defaultdic上场。它是python collections模块的一个内置类,主要作用是方便我们进行快速地全局初始化字典。只需要一句代码,即可非常优雅地实现所有字典键的全局初始化,用法也非常简单。我们来看看下面这个非常简单的例子:

大家看到了吗,只需要一句代码,就完成了字典的全局初始化。这里首先需要明确的一点是,这个参数int并不是用来约束键的类型,也不是约束值的类型,它指的是后面如果我们访问的key不存在的话,返回什么类型的默认值。比如我们指定int,就返回int类型的默认值0,指定list,就返回列表类型的初始值[]。当然我们可以指定python中任意的基本类型,比如str,list,tuple,dict,float这些都是可以的,返回的就是对应类型的默认值。大家后面在使用这个字典的时候,尽管大胆地访问任意的键,如果该键不存在,就将返回对应类型的默认值,什么异常处理、get方法全都不需要了。

怎么样,是不是非常简单,你get到了吗?

注:本文为蜗牛学院资深讲师卿淳俊老师原创,首发链接https://mp.weixin.qq.com/s/9Qv5-MU00kye4---dSnPZA,切勿擅自盗用,如需转载请私聊我处获得授权并注明出处。

pythondict初始化_利用defaultdict对字典进行全局初始化。相关推荐

  1. ios 数组中的字典排序_利用数组和字典,实现按指定规则的排序

    大家好,今日我们继续讲解数组与字典解决方案,今日讲解第47讲:利用字典和数组,实现按指定规则的排序.随着字典讲解的深入,我们发现字典真的很神奇,在VBA代码中,给人以十分清爽的感觉,在这套数组与字典解 ...

  2. ogg初始化mysql数据_利用OGG进行数据库表的初始化

    利用OGG进行数据库表的初始化 前提是已经搭建好了OGG的运行环境和OGG程序的安装部署!!! 若不知道如何安装OGG请查阅博客中相关安装部署文档. 1.停止目标端replicat进程re1 2.配置 ...

  3. vba数组如何精确筛选_利用数组和字典,实现按指定规则的排序

    大家好,今日我们继续讲解数组与字典解决方案,今日讲解第47讲:利用字典和数组,实现按指定规则的排序.随着字典讲解的深入,我们发现字典真的很神奇,在VBA代码中,给人以十分清爽的感觉,在这套数组与字典解 ...

  4. malloc 初始化_你真的了解 NSObject 对象的初始化吗?

    在上一篇文章<利用__attribute__特性提高 APP 的鲁棒性>中,提及了NS_DESIGNATED_INITIALIZER属性.该属性表示指定初始化方法,今天的主题就是聊一聊NS ...

  5. java全局变量初始化_为什么 Java 中全局变量不一定初始化,局部变量必须初始化?...

    前几天,有个大佬考了我一个问题:为什么类的成员变量不需要指定值就可以自动赋予初始值,而方法内的局部变量就必须指定初始值呢? 说实话,这个问题确实难倒我了,之后我在网上一顿操作,终于把这个问题弄得稍微明 ...

  6. python编程:合并文本_利用列表或字典将两个通讯录文本合并-7

    源码: #利用字符串和列表将两个通讯录文本合并为一个文本 def main(): ftele1=open('TeleAddressBook.txt','rb') ftele2=open('EmailA ...

  7. css初始化_利用CSS变量实现炫酷的悬浮效果

    这个动画是将鼠标移动到订阅按钮上移动光标会显示相应的彩色渐变.这个想法很简单,但是它能使这个按钮脱颖而出,人们一下子就注意到它了,增加了点击的概率. 怎样才能达到这个效果,使我们的网站脱颖而出呢?其实 ...

  8. go结构体初始化_浅谈golang结构体偷懒初始化

    运行一段程序,警告: service/mysqlconfig.go:63::error: golang.guazi-corp.com/tools/ksql-runner/model.CreatingM ...

  9. python字典有什么用_什么是python字典??

    的小编总结,字典 (1)什么是字典 字典就是key-value键值对数据的集合(且key不可重复): 字典是可变的,无序的: 字典中,key必须是可哈希的数据类型: (2)字典的定义和初始化 定义字典 ...

最新文章

  1. python导入excel数据-python + Excel数据读取(更新)
  2. 【数据竞赛】5行代码检测分布不一致,代码少效果好!
  3. 空间谱专题11:子阵平滑与秩亏缺
  4. 访问权限冲突定义_一文读懂F5 REST API的细粒度角色访问控制
  5. 自然场景中交通标志牌检测~文末送书
  6. c语言ffm是什么错误类型,FFM不能封装flv的问题和替代方案SFF
  7. Robo3T 1.4.3下载安装配置
  8. 单片机 队列 C语言 OLED 示波器 心率波形 显示 MSP430F5529 pulsesensor ADS1292R
  9. kubernetes 创建pod /merged/dev/shm: invalid argument
  10. HTML---网络编程基础知识(2)
  11. miniprogram-ci官方文档
  12. cesium 矢量图 编辑_openlayers添加、删除矢量图,多边形
  13. 高端化自欺欺人,国产手机又一块遮羞布被扯下,事实是被苹果碾压
  14. 微信扫码支付模式一 : 获取商户订单信息超时或者商户返回的httpcode非200
  15. flac转换成mp3,flac转mp3方法
  16. 如何html5将文字插入图片,如何在文字中加入图片?
  17. 零基础想学习插画?入门从这里开始
  18. 基于微信小程序的小程序记账本APP源码
  19. Android 6.0系统中图片剪切空指针崩溃问题解决纪录
  20. ECU BootLoader and programming implementation specification

热门文章

  1. Python 08 面向对象
  2. [arm驱动]linux内核中断编程
  3. Hadoop不适合哪些场景 哪些场景适合?
  4. 《异构信息网络挖掘: 原理和方法(1)》一第2章 基于排名的聚类
  5. peripheralStateNotificationCB
  6. Java设计模式之七大结构型模式
  7. libinject的编译
  8. 如何提高个人的职涯“本钱”
  9. 用户体验数据分析 书单_如何使用数据改善用户体验设计
  10. leetcode 剑指 Offer 03. 数组中重复的数字