Python中defaultdict用法

  • defaultdict类就好像是一个dict,但是它是使用一个类型来初始化的
  • defaultdict类的初始化函数接受一个类型作为参数,当所访问的键不存在的时候,可以实例化一个值作为默认值
  • defaultdict类除了接受类型名称作为初始化函数的参数之外,还可以使用任何不带参数的可调用函数,到时该函数的返回结果作为默认值,这样使得默认值的取值更加灵活。
strings = ('puppy', 'kitten', 'puppy', 'puppy',
           'weasel', 'puppy', 'kitten', 'puppy')
counts = {}
"""
    单词统计
"""
# 方法1 使用判断语句检查
for word in strings:
    if word not in counts:
        counts[word] = 1
    else:
        counts[word] += 1
print(counts)

# 方法2 使用dict.setdefault()方法来设置默认值:
counts = {}
for word in strings:
    counts.setdefault(word, 0)
    counts[word] += 1
print(counts)

# 方法3 使用collections.defaultdict
from collections import defaultdict
counts = defaultdict(lambda: 0)
for word in strings:
    counts[word] += 1
print(counts)

结果:

{'puppy': 5, 'kitten': 2, 'weasel': 1}
{'puppy': 5, 'kitten': 2, 'weasel': 1}
defaultdict(<function <lambda> at 0x0000000001D12EA0>, {'puppy': 5, 'kitten': 2, 'weasel': 1})
[Finished in 0.1s]

更多: https://www.cnblogs.com/jidongdeatao/p/6930325.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏marsggbo

C++学习笔记之模板篇

一、模板 不管是函数模板还是类模板,在未初始化前都是不占用内存的。 另外一般来说模板代码不能分开编译,即不能分开写成.h文件和.c文件,需要写成一个文件。 ...

1878
来自专栏河湾欢儿的专栏

第二节单利、工厂、构造函数、原型链、call、bind、apply、sort

702
来自专栏九彩拼盘的叨叨叨

escape,encodeURI,encodeURIComponent

escape,encodeURI,encodeURIComponent这三个方法都是对URL进行编码的。

632
来自专栏Coding迪斯尼

自制Monkey语言编译器:实现函数闭包功能和为语言增加复杂数据结构

922
来自专栏web前端-

函数基础知识回顾

  String    Number   Boolean   Null    undefined    //占有固定的内存大小,如数值型占八个字节,布尔类型...

623
来自专栏Python小屋

1000道Python题库系列分享四(40道)

热烈庆祝2018年2月董付国老师《Python程序设计(第2版)》出版18个月第5次印刷,《Python可以这样学》出版12个月第5次印刷,系列教材《Pytho...

6127
来自专栏土豆专栏

Java面试之关键字

finalize()是Object的protected方法,子类可以覆盖该方法来实现资源清理工作,GC在回收对象之前调用该方法。

18310
来自专栏星汉技术

Scala语法介绍

2875
来自专栏xingoo, 一个梦想做发明家的程序员

【面试虐菜】—— JAVA面试题(1)

今天参加笔试,里面有设计模式,和一些基础题! 印象最深的是:什么不是Object的函数,我蒙的finalize,哎,无知! 还问了,接口与抽象类的不同,还...

1779
来自专栏我和PYTHON有个约会

24. 企业级开发基础5:面向对象特征(封装)

在我们程序开发过程中,定义好类型之后就可以通过类型来创建对象 如:我们定义一个中华人民共和国公民的类型

711

扫码关注云+社区