Python——collections

3851 ワード

概要
公式文書を参照してください.https://docs.python.org/3.8/library/collections.html?highlight=collections#collections.deque
collectionsはPython内に構築された集合モジュールであり、多くの有用な集合クラスを提供しています.このモジュールは特定のターゲットのコンテナを実現し,Python標準内蔵コンテナdict,list,set,tupleの代替選択を提供する.namedtuple()
名前付きメタグループサブクラスのファクトリ関数の作成deque
リストのようなコンテナは、両端に素早く追加(append)し、ポップアップ(pop)することができます.ChainMap
辞書(dict)のようなコンテナクラスは、複数のマッピングを1つのビューに集約します.Counter
辞書のサブクラスで、ハッシュ可能なオブジェクトのカウント機能を提供します.OrderedDict
辞書のサブクラスは、追加された順序を保存します.defaultdict
ディクショナリのサブクラス.ファクトリ関数を提供し、ディクショナリクエリーにデフォルト値を提供します.UserDict
辞書オブジェクトをカプセル化し、辞書のサブクラス化を簡素化UserList
リストオブジェクトをカプセル化し、リストのサブクラス化を簡素化UserString
リスト・オブジェクトをカプセル化し、文字列のサブクラス化を簡素化
namedtuple() namedtupleは、カスタムtupleオブジェクトを作成し、tuple要素の個数を規定し、tupleの要素をインデックスではなく属性で参照できる関数です.
namedtuple('名前',[プロパティリスト])
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x,p.y)
#  :1 2

deque listを使用してデータを格納する場合、インデックスによって要素にアクセスするのは速いが、listは線形記憶であり、データ量が大きい場合、挿入と削除の効率が低いため、要素の挿入と削除は遅い.dequeは、挿入および削除操作を効率的に実現するための双方向リストであり、キューおよびスタックに適しています.dequeは、listのappend()およびpop()の実装に加えて、appendleft()およびpopleft()をサポートし、これにより、要素を非常に効率的にヘッダに追加または削除することができる.
from collections import deque
q = deque(['a', 'b', 'c'])
print(q)  #deque(['a', 'b', 'c'])
q.append('x')
print(q) #deque(['a', 'b', 'c', 'x'])
q.appendleft('y')
print(q) #deque(['y', 'a', 'b', 'c', 'x'])

ChainMap
Counter Counterは、単純なカウンタであり、例えば、統計文字が現れる個数である.most_common([n])は、n個の最も一般的な要素のリストと、最も一般的な要素から最も少ない要素までのカウントを返します.nまたはNoneを省略すると、most_common()はカウンタ内のすべての要素を返します.等しい数の要素は、最初に遭遇した順序でソートされます.
from collections import Counter
c = Counter()
for i in 'programminggameguo':
    c[i] = c[i] + 1
print(c)  #Counter({'g': 4, 'm': 3, 'a': 2, 'r': 2, 'o': 2, 'i': 1, 'e': 1, 'p': 1, 'u': 1, 'n': 1})
print(c.most_common(1)) #[('g', 4)]
#         
print(c.most_common(1)[0][0]) #g

OrderedDict dictを使用する場合、Keyは無秩序です.dictを反復する場合、Keyの順序を決定することはできません.キーの順序を維持するには、OrderedDict。を使用します.
from collections import OrderedDict
d = dict([('a', 1), ('b', 2), ('c', 3)])
print(d)  #  :{'c': 3, 'b': 2, 'a': 1},dict Key    
od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(od) #  :OrderedDict([('a', 1), ('b', 2), ('c', 3)]),OrderedDict Key    
#  ,OrderedDict Key          ,  Key    
od['z'] = 1
od['y'] = 2
od['x'] = 3
print(od)  #OrderedDict([('a', 1), ('b', 2), ('c', 3), ('z', 1), ('y', 2), ('x', 3)])

defaultdict dictを使用する場合、参照したKeyが存在しない場合、KeyErrorが投げ出される.keyが存在しない場合にデフォルト値を返すには、defaultdict。を使用します.
注記デフォルト値は呼び出し関数によって返され、関数はdefaultdictオブジェクトの作成時に入力されます.
Keyが存在しない場合にデフォルト値を返す以外は、defaultdictの他の動作はdictと全く同じです.
from collections import defaultdict
dd = defaultdict(lambda: 'N/A')
dd['key1'] = 'abc'
print(dd['key1'])  #abc
print(dd['key2'])  #N/A

UserDict
UserList
UserString