初识defaultdict

之前在使用字典的时候, 用的比较随意, 只是简单的使用dict.
然而这样在使用不存在的key的时候发生KeyError这样的一个报错, 这时候就该defaultdict登场了.

如何使用defaultdict

可以这样

from collections import defaultdict
d1 = defaultdict(int)

或者这样

import collections
d1 = collections.defaultdict(int)

defaultdict的源码

如下:

class collections.defaultdict([default_factory) # 一个参数,确定字典值的默认类型
python官方文档中对defaultdict的解释如下:

default_factory 接收一个工厂函数作为参数, 例如int str list set等.
defaultdict在dict的基础上添加了一个missing(key)方法, 在调用一个不存的key的时候, defaultdict会调用__missing__, 返回一个根据default_factory参数的默认值, 所以不会返回Keyerror.

defaultdict与dict实例化字典类型的区别**

使用defaultdict任何未定义的key都会默认返回一个根据method_factory参数不同的默认值, 而相同情况下dict()会返回KeyError.
比较下面代码:

d1 = dict()
d2 = defaultdict(list)
print(d1['a']) # 直接报错keyErorr
print(d2['a'])    # 输出 []  # 因为defaultdict里传的参数为list,所以默认值为一个空列表,
# 如果传的参数是int则默认值为0,如果传的参数是str会输出一个默认的空字符串

collections模块之defaultdict相关推荐

  1. python中的defaultdict_简介Python的collections模块中defaultdict类型的用法

    defaultdict 主要用来需要对 value 做初始化的情形.对于字典来说,key 必须是 hashable,immutable,unique 的数据,而 value 可以是任意的数据类型.如果 ...

  2. Python collections 模块 namedtuple、Counter、defaultdict

    1. namedtuple 假设有两个列表,如下,要判断两个列表中的某一个索引值是否相等. In [7]: p = ['001', 'wohu', '100', 'Shaanxi']In [8]: t ...

  3. python collections模块(数据结构常用模块)计数器Counter 双向队列deque 默认字典defaultdict 有序字典OrderedDict 可命名元组namedtuple

    collections 模块----Python标准库,是数据结构常用模块 常用类型有: 计数器(Counter) 双向队列(deque) 默认字典(defaultdict) 有序字典(Ordered ...

  4. Python的重要模块:collections (namedtuple、defaultdict、deque、Counter、OrderedDict、ChainMap)

    collections 模块作用 包含双端队列 deque.默认字典 defaultdict.命名元组 namedtuple.计数器 Counter.Ordereddict 和 ChainMap 等重 ...

  5. python︱ collections模块(namedtuple/defaultdict/OrderedDict等)

    collections有的功能: ['deque', 'defaultdict', 'namedtuple', 'UserDict', 'UserList', 'UserString',\'Count ...

  6. Python标准库——collections模块的Counter类

    更多16 最近在看一本名叫<Python Algorithm: Mastering Basic Algorithms in the Python Language>的书,刚好看到提到这个C ...

  7. python中collections_Python中的collections模块

    Python中内置了4种数据类型,包括:list,tuple,set,dict,这些数据类型都有其各自的特点,但是这些特点(比如dict无序)在一定程度上对数据类型的使用产生了约束,在某些使用场景下效 ...

  8. collections模块简介

    collections模块简介 除python提供的内置数据类型(int.float.str.list.tuple.dict)外,collections模块还提供了其他数据类型,使用如下功能需先导入c ...

  9. collections模块

    collections模块在内置数据类型(dict.list.set.tuple)的基础上,还提供了几个额外的数据类型:ChainMap.Counter.deque.defaultdict.named ...

最新文章

  1. Spring入门详细教程(一)
  2. c++同一屏幕输出多种颜色字体
  3. HDU3400(计算几何中的三分法利用)
  4. 19秋学期计算机网络基础在线作业,南开19秋学期(1709、1803、1809、1903、1909)《计算机网络基础》在线作业资料答案3...
  5. 运行Java程序时 Tomcat出错 显示端口被占用
  6. 数据库 统计数据收集 有什么作用_《原神》荒山孤剑录2/5收集汇总 荒山孤剑录作用是什么...
  7. IAR使用技巧 之 快捷键批量更换指定字符(以及Keil的全局替换功能)
  8. H3C VLAN同步MVRP实验
  9. guava 的重试机制 guava-retrying 使用
  10. 商务办公软件应用与实践【4】
  11. linux救黑砖手机,手机黑砖9006/9008救砖教程 通用救砖模式详细流程
  12. 前端css简易拾色器
  13. 自己设计个动态屏保吧
  14. win下使用curl
  15. 接口可维可测;统一管理
  16. 程序员今年最值得关注的 23 种新移动技术
  17. React上拉加载和下拉刷新
  18. Vistor VTL 虚拟磁带机相关问题
  19. 微信小程序总结(阶段第一次总结)
  20. 编码解码--url编码解码

热门文章

  1. sqlserver2017 +SSMS+ VS2017+SSDT 安装要点及相关组件下载地址
  2. 1433. [ZJOI2009]假期的宿舍【二分图】
  3. 浏览器安全与MSAA
  4. 数据挖掘:大数据发展的核心驱动力
  5. AOP的实现方式比较,cglib vs jdk
  6. IOS 如何获取ppi
  7. 数据结构之线性表-链式存储之单链表(一)
  8. SQL注入攻击及防范
  9. 分享平时工作中那些给力的shell命令
  10. 一次Nginx负载均衡的安装与配置