Python collection

collections ライブラリーの概要 collections ライブラリーは、Pythonの標準ライブラリーの一部であり、リストやタプル、辞書といった基本的なデータ型に加え、便利なデータ構造を提供します。特に、データの整理やカウント、順序づけといった操作において、効率的な処理を実現するためのクラスや関数が多数用意されています。

collections の主要メソッドとその使い方

  1. Counter カウント可能なオブジェクトを作成し、要素の出現回数をカウントできます。

from collections import Counter

# 使用例
data = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
counter = Counter(data)
print(counter)  # 出力: Counter({'apple': 3, 'banana': 2, 'orange': 1})

  1. defaultdict 辞書と似ていますが、キーが存在しない場合にデフォルトの値を自動で返します。

from collections import defaultdict

# 使用例
dd = defaultdict(int)  # intを渡すと、デフォルト値は0になります
dd['apple'] += 1
print(dd)  # 出力: defaultdict(<class 'int'>, {'apple': 1})
  1. namedtuple 名前付きタプルを作成し、タプルのフィールドに名前を付けることができます。

from collections import namedtuple

# 使用例
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x, p.y)  # 出力: 1 2

  1. deque 両端からの追加と削除が効率的なリストです。

from collections import deque

# 使用例
d = deque([1, 2, 3])
d.appendleft(0)
d.append(4)
print(d)  # 出力: deque([0, 1, 2, 3, 4])
  1. OrderedDict 挿入した順序を保持する辞書です。

from collections import OrderedDict

# 使用例
od = OrderedDict()
od['banana'] = 1
od['apple'] = 2
od['orange'] = 3
print(od)  # 出力: OrderedDict([('banana', 1), ('apple', 2), ('orange', 3)])

活用場面、活用方法 Counter: データセット内の要素の頻度分析に便利です。例えば、単語の出現頻度を数える場合などに使用できます。 defaultdict: 辞書を扱う際に、キーが存在しない場合のエラーハンドリングを簡単にします。 namedtuple: データの構造化が必要な場面で、クラスの代替として軽量に使用できます。 deque: キューやスタックの実装で、両端操作が必要な場合に最適です。 OrderedDict: 特定の順序でデータを保存し、後でその順序を維持して処理する必要がある場合に役立ちます。 このライブラリーを使えば、こんなことができる! データの出現頻度を簡単にカウント 存在しないキーを扱う際のエラーを防止 名前付きフィールドで構造化データを管理 効率的に双方向のキュー操作を実行 データ挿入順序を保持した辞書操作 ライブラリーを使わずに書いたコード 例えば、要素の出現頻度をカウントする場合:

data = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
counter = {}

for item in data:
    if item in counter:
        counter[item] += 1
    else:
        counter[item] = 1

print(counter)  # 出力: {'apple': 3, 'banana': 2, 'orange': 1}

ライブラリーを使って実装したコード

collections.Counterを使用する場合:

from collections import Counter

data = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
counter = Counter(data)
print(counter)  # 出力: Counter({'apple': 3, 'banana': 2, 'orange': 1})

このように、collectionsライブラリーを使用すると、コードが簡潔になり、同時に処理が効率化されます。

この記事が気に入ったらサポートをしてみませんか?