パイソン - colllectionモジュール

組み込みデータ型(内dict , list , set , tupleの塩基)、収集モジュールは、追加データのいくつかのタイプを提供します。Counter deque defaultdict namedtuple OrderedDict.

  1. namedtuple :生産名は、要素のタプルのコンテンツにアクセスするために使用することができます

    from collections import namedtuple
    Point = namedtuple('Point',['x','y'])
    p = Point(1,2)
    print(p.x,p.y)  # 1 2
  2. deque :両端キューが、迅速かつ追加オブジェクトの反対側から出ることができます

    # 使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低。
    # deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:
    
    from collections import deque
    q = deque(['a','b','c'])
    q.append('d')
    q.appendleft(0)
    print(q)  deque([0, 'a', 'b', 'c', 'd'])
    
    deque除了实现list的append()和pop()外,还支持appendleft()和popleft(),这样就可以非常高效地往头部添加或删除元素。
  3. Counter :メインをカウントするカウンタ

    # Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的Interger(包括0和负数)。
    from collections import Counter
    s = Counter('asgfdg')
    print(s)
    Counter({'g': 2, 'a': 1, 's': 1, 'f': 1, 'd': 1})
  4. OrderedDict :順序付き辞書

    # 使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。如果要保持Key的顺序,可以用OrderedDict:
    from collections import OrderedDict
    d = dict([('a', 1), ('b', 2), ('c', 3)])
    print(d)  # dict 的字典是无序的
    
    od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
    print(od)  # OrderedDict的字典是有序的
    OrderedDict([('a', 1), ('b', 2), ('c', 3)])
  5. defaultdict :デフォルト値で辞書

    from collections import defaultdict
    values = [11,22,33,44,55,66,77,88,99]
    dic = defaultdict(list)
    for i in values:
        if i > 66:
            dic['key1'].append(i)
        else:
            dic['key2'].append(i)
    print(dic) 
    defaultdict(<class 'list'>, {'key2': [11, 22, 33, 44, 55, 66], 'key1': [77, 88, 99]})
    
    # 原生字典的解决方法
    l = [11,22,33,44,55,66,77,88,99]
    dic = {}
    for i in l:
        if i > 66:
            if 'key1' not in dic:
                dic['key1'] = []
            dic['key1'].append(i)
        else:
            if 'key2' not in dic:
                dic['key2'] = []
            dic['key2'].append(i)
    print(dic)
    {'key2': [11, 22, 33, 44, 55, 66], 'key1': [77, 88, 99]}

おすすめ

転載: www.cnblogs.com/Agoni-7/p/11135083.html