【python】Python标准库defaultdict模块

来源:http://www.ynpxrz.com/n1031711c2023.aspx

Python标准库中collections对集合类型的数据结构进行了很多拓展操作,这些操作在我们使用集合的时候会带来很多的便利,多看看很有好处。

defaultdict是其中一个方法,就是给字典value元素添加默认类型,之前看到过但是没注意怎么使用,今天特地瞅了瞅。

首先是各大文章介绍的第一个例子:

代码如下:

import collections as coll

def default_factory():

return ‘default value‘

d = coll.defaultdict(default_factory, foo=‘bar‘)

print ‘d:‘,d

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

print ‘foo=>‘, d[‘bar‘] #key为‘bar‘的元素不存在,会有一个默认值

输出结果是这样的:

代码如下:

d: defaultdict(, {‘foo‘: ‘bar‘})

foo=> bar

foo=> default value

结论:这里可以看到,当我们取字典中一个没有的key的时候就会自动根据 default_factory生成一个value,类似于 d.get(‘bar‘,‘default value‘)

一个对比的例子:

如果一个字典中有个map的value是一个set,往这个set连续添加两个元素,使用原始的dict是这样的

代码如下:

dict_set1 = {}

#如果不知道这个字段中key有没有,需要先判断

if ‘key‘ not in dict_set1:

dict_set1[‘key‘] = set()

dict_set1[‘key‘].add(‘111‘)

dict_set1[‘key‘].add(‘000‘)

print dict_set1

如果使用defaultdict就是这样的

代码如下:

dict_set = coll.defaultdict(set)

dict_set[‘key‘].add(‘000‘)

dict_set[‘key‘].add(‘111‘)

print dict_set

好处就是不需要做set的初始化这个判断了。

两个使用的小案例

代码如下:

ss = ‘1111222233334444‘

dict_int = coll.defaultdict(int)

for s in ss:

dict_int[s] += 1

print dict_int

‘‘‘‘‘

官方文档的这个例子就能看到这种写法的简洁了

>>> s = [(‘yellow‘, 1), (‘blue‘, 2), (‘yellow‘, 3), (‘blue‘, 4), (‘red‘, 1)]

>>> d = defaultdict(list)

>>> for k, v in s:

... d[k].append(v)

...

>>> d.items()

[(‘blue‘, [2, 4]), (‘red‘, [1]), (‘yellow‘, [1, 3])]

‘‘‘

当我们做这种带有统计性质的数据操作时候,这个对象很好用。

时间: 2024-10-13 02:44:45

【python】Python标准库defaultdict模块的相关文章

[python标准库]XML模块

1.什么是XML XML是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分.您可以创建内容,然后使用限定标记标记它,从而使每个单词.短语或块成为可识别.可分类的信息. XML有以下几个特点. XML的设计宗旨是传输数据,而非显示数据. XML标签没有被预定义.您需要自行定义标签. XML被设计为具有自我描述性. XML是W3C的推荐标准. 其解析流程如下图: 2.常用解析XML的Python包 Python的标准库中,提供了6种

Python 标准库 ConfigParser 模块 的使用

Python 标准库 ConfigParser 模块 的使用 demo #!/usr/bin/env python # coding=utf-8 import ConfigParser import sys config = ConfigParser.ConfigParser() #写入 config.add_section("Inc_basic") config.set("Inc_basic","name","iPIN")

Python 3标准库 第十四章 应用构建模块

Python 3标准库 The Python3 Standard Library by  Example -----------------------------------------第十四章     应用构建模块-----------------------------14.1  argparse:命令行选项和参数解析----------------------------- argparse模块 14.1.1  建立解析器 14.1.2  定义参数 argparse模块 14.1.3 

一、Python的标准库String

一.Python的标准库String 1.查看武器 a. help(type()) name = "jane"print(help(type(name))) b. capitalize() name = "jane" print(name.capitalize()) 效果:Jane c. center() name = "jane" print(name.center(50, '-')) 效果:-----------------------jan

Python——标准库 Sys模块

------------------------------------------------------------------------------------------------------ sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. 处理命令行参数 在解释器启动后, argv 列表包含了传递给脚本的所有参数, 列表的第一个元素为脚本自身的名称. ---------------------------------------------------

python之标准库

Python的标准安装包括一组模块,称为标准库. 10.1 模块 >>>emport math >>>math.sin(0) 0.0 10.1.1 模块是程序 任何python程序都可以作为模块导入. #hello.py print "hello,world!" 解释器在哪里寻找模块.(windows) >>>import sys >>>sys.path.append('c:/python') 在unix系统中,不

python linecache标准库基础学习

#python标准库基础之:linecacge:高效读取文本文件#说明与作用"""可以从文件或者导入python模块获取文件,维护一个结果缓存,从而可以更高效地从相同文件读取多行文本;此模块会在python标准库的其他部分中用到,缓存实现将在内存中保存文件内容(解析为单独的行).API通过索引一个列表返回所请求的行.与反复地读取文件并解析文本来查找所需文本行相比,这样可以节省时间,这个方法在查找同一个文件中多行尤其有用 ,比如一个异常."""im

python calendar标准库基础学习

# -*- coding: utf-8 -*-# 作者:新手__author__ = 'Administrator'#标准库:日期时间基础学习:calendar:处理日期#例1import calendarc=calendar.TextCalendar(calendar.SUNDAY)c.prmonth(2015,3)#prmonth()简单函数,生成一个月的格式文件输出#TextCalendar()从星期天(为第一天,因为老外是从星期天开始算第一天的)#利用HTMLCalendar和forma

腌制数据--python(pickle标准库)

Python提供了伊特标准库,名为pickle,它可以保存和加载几乎任何Python数据独享,包括列表. 一旦把数据“腌制”到一个文件,它将会持久存储,可以在以后某个日期/时间读入另外一个程序. 用dump保存,用load恢复 使用pickle很简单:只需要导入所需的模块,然后使用dump()保存数据,以后某个时间使用load() 恢复数据.处理腌制数据时的唯一要求是,必须以二进制访问模式打开这些文件: import pickle ... with open('mydata.pickle', '