defaultdict 主要用来需要对 value 做初始化的情形。对于字典来说,key 必须是 hashable,immutable,unique 的数据,而 value 可以是任意的数据类型。如果 value 是 list,dict 等数据类型,在使用之前必须初始化为空,有些情况需要把 value 初始化为特殊值,比如 0 或者 ‘‘。 from collections import defaultdict

person_by_age = defaultdict(list)

for person in persons:

d[person.age].append(person.name)

defaultdict 和 dict 的使用方法一样,只有在初始化的时候必须传入一个 callable 的对象 x,当访问某个还不存在的 key 时,会把 value 自动设置成 x()。比如上例中,当第一次访问某个年龄的人 d[person.age] 就会变成 list(), 也就是 []。

当然也可以使用自己定义的 callable 对象,比如: d = defaultdict(lambda: 0)

d["hello"] += 1 # 1

d["a"] # 0

defaultdict 要比 dict.set_default 效率更高,使用起来也更直观和方便。

标准字典包括一个方法setdefault()来获取一个值,如果值不存在则建立一个默认值。defaultdict初始化容器是会让调用者提前指定默认值。 import collections

def default_factory():

return 'default value'

d = collections.defaultdict(default_factory, foo = 'bar')

print 'd:', d

print 'foo =>', d['foo']

print 'var =>', d['bar']

只要所有键都有相同的默认值,就可以使用这个方法。

上面的结果是: d: defaultdict(, {'foo': 'bar'})

foo => bar

var => default value

python中的defaultdict_简介Python的collections模块中defaultdict类型的用法相关推荐

  1. Python的collections模块中namedtuple结构使用示例

    namedtuple顾名思义,就是名字+元组的数据结构,下面就来看一下Python的collections模块中namedtuple结构使用示例 namedtuple 就是命名的 tuple,比较像 ...

  2. python中counter_Python collections模块中counter()的详细说明,Pythoncollections,之,Counter,详解...

    collections模块 ==> Python标准库,数据结构常用的模块:collections包含了一些特殊的容器,针对Python内置的容器,例如list.dict.set和tuple,提 ...

  3. python优雅编程_Python优雅编程——Collections模块中的高性能数据类型

    Python中内置了4 种数据类型,列表(List),元组(Tuple),集合(Set),字典(Dict).这些数据类型都有其各自的特性,但是有些特性,比如字典无序,在一定程度上对数据类型的使用产生了 ...

  4. python scipy.stats.norm.cdf_python的scipy.stats模块中正态分布常用函数总结

    python的scipy.stats模块是连续型随机变量的公共方法,可以产生随机数,通常是以正态分布作为scipy.stats的基本使用方法.本文介绍正态分布的两种常用函数:1.累积概率密度函数sta ...

  5. python collections 模块中的 deque

    collections.deque介绍 collections 是 python 内建的一个集合模块,里面封装了许多集合类,其中队列相关的集合只有一个:deque. deque 是双边队列(doubl ...

  6. 【Python】常用模块(三)——collections模块中的几个常用方法详解

    前言 本篇博客主要就少Python常用模块collections中的几个常用方法,作为一种更高级的数据结构,这个模块提供了几个高效的方法来处理数据. Counter Counter用于统计元素个数,具 ...

  7. python namedtuple用法_Python的collections模块中namedtuple结构使用示例

    namedtuple 就是命名的 tuple,比较像 C 语言中 struct.一般情况下的 tuple 是 (item1, item2, item3,...),所有的 item 都只能按照 inde ...

  8. python中main.py是什么意思_python 模块中的 __init__.py __main__.py的作用

    python中文件夹想作为一个模块被引用,则在文件夹内必须要包含 __init__.py 文件,即使此文件为空. 如果此模块想要运行则必须要包含 __main__.py 文件.接下来说下两个文件起到的 ...

  9. python 多态app_多态简介 | Python从入门到精通:高阶篇之三十三-阿里云开发者社区...

    多态 多态是面向对象的三大特征之一. 多态从字面上理解是多种形态.例如:狗有多个种类(狼狗.藏獒.哈士奇.古代牧羊犬...). 一个对象可以以不同的形态去呈现. 我们先来定义两个类: class A: ...

最新文章

  1. Halcon:手眼标定——眼在手外与眼在手上
  2. redux异步action_React躬行记(12)——Redux中间件
  3. MonkeyRunner学习(1)测试连接
  4. 【华为云技术分享】解析数据治理在过程可信变革中的运作流程
  5. 随记 elasticsearch
  6. css3 first letter,::first-letter
  7. 纯css3实现瀑布流布局
  8. POJ1068 Parencodings(模拟)
  9. 天正的计算机快捷命令大全,新手必看-史上最全CAD快捷键大全
  10. 计算机的计算百分比的函数是哪个好,excel用函数计算百分比计算的方法
  11. Axure-RP8 介绍
  12. connect holder is null问题记录
  13. 如何在win10上搭建服务器
  14. [喵咪软件推荐(1)]全球国家信息库
  15. Java直接AXIS调用远程WebService
  16. ICCV2021|你以为这是一个填色模型?其实我是检索模型!
  17. LED背光源运用在数控设备上
  18. 天瑞地安电子锁APP应用 为安全家居保驾护航
  19. Gigaphoton新型KrF光源“G60K”量产出货
  20. uni-app开发微信小程序使用腾讯地图选点和城市选择器插件

热门文章

  1. Linux文本处理之printf:规定输出内容与样式 %规定内容样式 \规定排版样式
  2. Yii的beforeAction
  3. 互为质数的勾股数c语言,c语言 寻求勾股数满足x2+y2=z2的正整数x,y和z称为一组勾股数(pythagorean...
  4. android 自动表单提交数据,Android 使用三种方式获取网页(通过Post,Get进行表单的提交)...
  5. python多核多线程编程_python是否支持多处理器/多核编程?
  6. qpython3l_介绍一下手机里能敲Python代码的软件,QPython3L和Pydroid3,顺便用有道翻译一下后者...
  7. mysql错误:file xxx conflicts with file from package mysql-libs-5.5.68-1.el7.x86_64
  8. java 文件流关闭 finally,关于java:为什么需要在“ finally”内关闭文件,而仍将其嵌入在“ try / catch”块内?...
  9. mysql某元素为空_PHP - MySQL,认为$ result在某些时刻是空的,当时应该有元素
  10. 光纤通道速率查看_基于OM3/OM4的光纤通道连接方案