14-python基础—python3中的defaultdict()

摘要:
但是有时候,字典中的每个键都存在默认值是非常方便的。defaultdict可以避免KeyError异常。

1.collections.defaultdict 类

from collections import defaultdict

2.collections.defaultdict 类与工厂函数dict比较:

(1) 众所周知,在Python中如果访问dict字典中不存在的键,会引发KeyError异常。但是有时候,字典中的每个键都存在默认值是非常方便的。defaultdict可以避免KeyError异常。

1 #1-dict()
2 strings = ('puppy', 'kitten', 'puppy', 'puppy',
3    'weasel', 'puppy', 'kitten', 'puppy')
4 counts ={}
5 for kw instrings:
6  counts[kw] += 1
7 
8 #报错
9 #Traceback (most recent call last):
10 #File "C:UserssummerDesktopdemo.py", line 5, in <module>
11 #counts[kw] += 1
12 #KeyError: 'puppy'
13 
14 #2-defaultdict()
15 from collections importdefaultdict
16 
17 strings = ('puppy', 'kitten', 'puppy', 'puppy',
18    'weasel', 'puppy', 'kitten', 'puppy')
19 counts =defaultdict(int)
20 for kw instrings:
21  counts[kw] += 1
22 
23 print(counts)
24 
25 #defaultdict(<class 'int'>, {'puppy': 5, 'kitten': 2, 'weasel': 1})

(2)default_factory 接收一个工厂函数作为参数, 例如int str list set等.

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

from collections importdefaultdict

dic1 =defaultdict(int)
print(dic1['a'])

dic2 =defaultdict(list)
print(dic2['a'])

dic3 =defaultdict(dict)
print(dic3['a'])

#0#[]#{}

(3)返回的是工厂函数的实例,那么就具有了该工厂函数的相应方法。

免责声明:文章转载自《14-python基础—python3中的defaultdict()》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Flutter的环境配置以及一些常见问题冲刺Noip2017模拟赛1 解题报告——五十岚芒果酱下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

sql自动化检查和分析工具 :soar和soar-web 安装和使用体验

为了研究一下sql自动化检查和分析工具,是否有网上介绍的好用,我在本地进行soar 和 soar-web的安装和使用。 初步的实验结果,总结如下: 1. 安装相对来说较为麻烦,特别是soar-web的依赖包安装,涉及到python pip相关组件的下载安装。 2. 启动soar-web会遇到一些奇怪问题,提示 “ImportError: No module...

Python3基础9——range()函数

Python3 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表 list() 函数是对象迭代器,可以把range()返回的可迭代对象转为一个列表,返回的变量类型为列表。 函数语法:range(start,end,[step]) 参数含义:start:计数从start开始。默认是从0开始。例如range...

python3 ldap认证

python3 ldap认证 #! /usr/bin/python # -*- coding:utf-8 -*- # Author: panb import logging from ldap3 import Server, Connection, ALL logger = logging.getLogger("oauth") LDAP = {...

Python3基础 super 子类调用父类的__init__

         Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda : 4.5.11    typesetting : Markdown   example_1 code """ @Author : 行初心 @D...

Python3 venv 创建虚拟环境

简介 Python3.3以上的版本通过venv模块原生支持虚拟环境,可以代替Python之前的virtualenv。 该venv模块提供了创建轻量级“虚拟环境”,提供与系统Python的隔离支持。每一个虚拟环境都有其自己的Python二进制(允许有不同的Python版本创作环境),并且可以拥有自己独立的一套Python包。 需要注意的是,在Python3....

python2/3+selenium+chrome driver 64位环境配置

新换了电脑,重新配置下环境,备忘下 ===============================================================  1.python2环境安装 https://www.python.org/downloads/release/python-2714/ 下载64位Windows x86-64 MSI inst...