• 技术文章 >后端开发 >Python教程

    Python标准库defaultdict模块使用示例

    2016-06-06 11:26:11原创511
    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

    '''''
    官方文档的这个例子就能看到这种写法的简洁了
    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])]
    '''


    当我们做这种带有统计性质的数据操作时候,这个对象很好用。
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:Python psutil模块简单使用实例 下一篇:介绍Python中的__future__模块
    千万级数据并发解决方案

    相关文章推荐

    • 详细介绍python的numpy模块• Python多进程知识点总结• Python模块化整理和第三方模块的安装(总结分享)• 一起聊聊Python的编码样式• 带你搞懂Python反序列化
    1/1

    PHP中文网