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