Python中defaultdict用法

正文共311个字,预计阅读时间5分钟。

defaultdict类就好像是一个dict,但是它是使用一个类型来初始化的

defaultdict类的初始化函数接受一个类型作为参数,当所访问的键不存在的时候,可以实例化一个值作为默认值

defaultdict类除了接受类型名称作为初始化函数的参数之外,还可以使用任何不带参数的可调用函数,到时该函数的返回结果作为默认值,这样使得默认值的取值更加灵活。

 1strings = ('puppy', 'kitten', 'puppy', 'puppy',
 2   'weasel', 'puppy', 'kitten', 'puppy')
 3counts = {}
 4"""
 5单词统计
 6"""
 7# 方法1 使用判断语句检查
 8for word in strings:
 9if word not in counts:
10counts[word] = 1
11else:
12counts[word] += 1
13print(counts)
14# 方法2 使用dict.setdefault()方法来设置默认值:
15counts = {}
16for word in strings:
17counts.setdefault(word, 0)
18counts[word] += 1
19print(counts)
20# 方法3 使用collections.defaultdict
21from collections import defaultdict
22counts = defaultdict(lambda: 0)
23for word in strings:
24counts[word] += 1
25print(counts)

结果:

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

更多:

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

原文链接:https://www.jianshu.com/p/fa06ceaa56a8

原文发布于微信公众号 - 人工智能LeadAI(atleadai)

原文发表时间:2018-06-11

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏用户2442861的专栏

C++ STL空间配置源码分析以及实现二

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

10520
来自专栏海天一树

小朋友学C语言(13):逻辑运算符

逻辑运算符有三种,“&&”(逻辑与)、“||”(逻辑或)和“!”(逻辑非) (一)逻辑与&& “&&”相当于生活中说的“并且”,就是两个条件都同时成立的情况下“...

379140
来自专栏Java学习网

Java面试中最常见的10个问题,Java底层知识,花点时间学习一下

1.什么是 Java 虚拟机?为什么 Java 被称作是“平台无关的编程语言”? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。Java 源文...

28950
来自专栏深度学习之tensorflow实战篇

利用python内置函数,快速统计单词在文本中出现的次数

#coding=utf-8 import collections import os with open('str.txt') as file1:#打开文本...

43180
来自专栏GreenLeaves

JS框架设计之对象扩展一种子模块

对象扩展 说完了,对象的创建(框架的命名空间的创建)以及如何解决多库之间的命名空间冲突问题之后,接下来,就是要扩展我们的对象,来对框架进行扩展,我们需要一种新功...

24190
来自专栏java、Spring、技术分享

java字节码

  我们都知道Java字节码是JVM所使用的指令集。java字节码可以分为如下几类:

39320
来自专栏LhWorld哥陪你聊算法

Linux篇---Grep和正则匹配

\                  转义字符 .                      匹配任意单个字符 [1249a],[^12],[a-k]  字符序...

51430
来自专栏lgp20151222

Class.forName()用法详解

主要功能 Class.forName(xxx.xx.xx)返回的是一个类 Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类,...

22210
来自专栏落花落雨不落叶

杭电2017

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

JS模式 之通用模式(译)

原文 http://shichuan.github.io/javascript-patterns/

11230

扫码关注云+社区

领取腾讯云代金券