zoukankan      html  css  js  c++  java
  • [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['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])]
    '''

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

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


  • 相关阅读:
    改造vant日期选择
    css3元素垂直居中
    npm综合
    (转)网页加水印方法
    Mac下IDEA自带MAVEN插件的全局环境配置
    隐藏注册控件窗口
    High performance optimization and acceleration for randomWalk, deepwalk, node2vec (Python)
    How to add conda env into jupyter notebook installed by pip
    The Power of WordNet and How to Use It in Python
    背单词app测评,2018年
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7371411.html
Copyright © 2011-2022 走看看