collections -- コレクションとコンテナのデータ型

このモジュールは、該当する :term:`CPython` モジュールのサブセットを実装しています。 詳しくはオリジナルの CPython ドキュメンテーションを参照してください: collections.

このモジュールは、様々なオブジェクトを保持/蓄積する高度なコレクションとコンテナのデータ型を実装します。

クラス

collections.deque(iterable, maxlen[, flags])

deques (両端キュー)は、O(1) (処理時間がデータ量に非依存)をサポートするリストのようなコンテナであり、両端キューのどちらかの側から追加やポップできます。次の引数を使用して新しい deques オブジェクトが作成されます。

  • iterable は空のタプルでなければならず、新しい両端キューが空で作成されます。
  • maxlen を指定する必要があり、両端キューはこの最大長にバインドされます。両端キューがいっぱいになると、追加された新しいアイテムは反対側のアイテムを破棄します。
  • オプションの flags を 1 にすると、項目を追加するときにオーバーフローをチェックするようになります。

boollen をサポートする他に、deque オブジェクトには次のメソッドがあります:

deque.append(x)

両端キューの右側に x を追加します。オーバーフローチェックが有効で、もう余地がない場合には IndexError を発生させます。

deque.popleft()

両端キューの左側から項目を削除して返します。項目が存在しない場合は IndexError を発生させます。

collections.namedtuple(name, fields)

これは特定の名前とフィールドセットを持つ新しい名前付きタプル型を作成するためのファクトリ関数です。namedtuple はタプルのサブクラスで、数値インデックスだけでなくシンボル型フィールド名を使った属性アクセス構文でもフィールドにアクセスできます。Fields は、フィールド名を指定する一連の文字列です。CPython との互換性のために、スペースで区切られたフィールドを持つ文字列にすることもできます(これはあまり効率的ではありません)。使用例:

from collections import namedtuple

MyTuple = namedtuple("MyTuple", ("id", "name"))
t1 = MyTuple(1, "foo")
t2 = MyTuple(2, "bar")
print(t1.name)
assert t2.name == t2[1]
collections.OrderedDict(...)

追加されたキーの順番を記憶して保持する dect 型のサブクラスです。順序付けされた辞書を反復すると、キー/項目を追加された順番で返します。

from collections import OrderedDict

# To make benefit of ordered keys, OrderedDict should be initialized
# from sequence of (key, value) pairs.
d = OrderedDict([("z", 1), ("a", 2)])
# More items can be added as usual
d["w"] = 5
d["b"] = 3
for k, v in d.items():
    print(k, v)

出力:

z 1
a 2
w 5
b 3