[Python-tools]defaultdict的使用场景

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(<function default_factory at 0x022E6E70>, {'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 = 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

'''
官方文档的这个例子就能看到这种写法的简洁了
https://docs.python.org/2/library/collections.html#collections.defaultdict
>>> 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])]
'''

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

本文出自 “orangleliu笔记本”博客,请务必保留此出处http://blog.csdn.net/orangleliu/article/details/38669867

[Python-tools]defaultdict的使用场景,布布扣,bubuko.com

时间: 2024-10-06 01:14:55

[Python-tools]defaultdict的使用场景的相关文章

Python collections.defaultdict

Python collections.defaultdict 笔记 其实defaultdict 就是一个字典,只不过python自动的为它的键赋了一个初始值.这也就是说,你不显示的为字典的键赋初值python不会报错,看下实际例子. 比如你想计算频率 frequencies = {} for word in wordlist: frequencies[word] += 1 python会抛出一个KeyError 异常,因为字典索引之前必须初始化,可以用下面的方法解决 for word in wo

Python Tools for Machine Learning

Python Tools for Machine Learning Python is one of the best programming languages out there, with an extensive coverage in scientific computing: computer vision, artificial intelligence, mathematics, astronomy to name a few. Unsurprisingly, this hold

Seven Python Tools All Data Scientists Should Know How to Use

Seven Python Tools All Data Scientists Should Know How to Use If you’re an aspiring data scientist, you’re inquisitive – always exploring, learning, and asking questions. Online tutorials and videos can help you prepare you for your first role, but t

Python collections.defaultdict() 与 dict的使用和区别

在Python里面有一个模块collections,解释是数据类型容器模块.这里面有一个collections.defaultdict()经常被用到.主要说说这个东西. 综述: 这里的defaultdict(function_factory)构建的是一个类似dictionary的对象,其中keys的值,自行确定赋值,但是values的类型,是function_factory的类实例,而且具有默认值.比如default(int)则创建一个类似dictionary对象,里面任何的values都是in

Python collections.defaultdict 笔记

其实defaultdict 就是一个字典,只不过python自动的为它的键赋了一个初始值.这也就是说,你不显示的为字典的键赋初值python不会报错,看下实际例子. 比如你想计算频率 frequencies = {} for word in wordlist: frequencies[word] += 1 python会抛出一个KeyError 异常,因为字典索引之前必须初始化,可以用下面的方法解决 for word in wordlist: try: frequencies[word] +=

python中defaultdict方法的使用

默认值可以很方便 众所周知,在Python中如果访问字典中不存在的键,会引发KeyError异常(JavaScript中如果对象中不存在某个属性,则返回undefined).但是有时候,字典中的每个键都存在默认值是非常方便的.例如下面的例子: strings = ('puppy', 'kitten', 'puppy', 'puppy', 'weasel', 'puppy', 'kitten', 'puppy') counts = {} for kw in strings: counts[kw]

【转发】一文看懂python主要应用领域或应用场景

转发来源: http://www.elecfans.com/d/644370.html Python简介 Python(英国发音:/?pa?θ?n/美国发音:/?pa?θɑ?n/),是一种面向对象的解释型计算机程序设计语言,由荷兰人GuidovanRossum于1989年发明,第一个公开发行版发行于1991年. Python是纯粹的自由软件,源代码和解释器CPython遵循GPL(GNUGeneralPublicLicense)协议.Python语法简洁清晰,特色之一是强制用空白符(whites

关于python的defaultdict

原文地址:http://www.cnblogs.com/herbert/archive/2013/01/09/2852843.html 作者首先看了看defaultdict的help解释,作者看了解释并且把英文翻译出来后,发现还是看不懂. 后面直接通过看示例看明白的.发现作者是挺风趣幽默的. 下面贴出,defaultdict() , setdefault和普通的 {} 代码 defaultdict和setdefault相比较,defaultdict的效率会高一些. 而普通的{}只能做赋值操作(因

Several Python Tools/Utilities

标准库附带了一些可以用来作为模块和作为命令行实用程序模块.Cilck Me! 作为命令行实用程序模块的使用方法: python -m module_name parameters