Python collections ライブラリ完全ガイド
Python 標準ライブラリの collections は、リストや辞書を拡張した高度なデータ構造を提供する強力なツールです。本記事では、collections の主要なコンポーネントとその実践的な使用例を詳しく解説します。
1. collections ライブラリの概要
collectionsは、Python の基本的なデータ構造(リスト、辞書、タプル)を拡張した特殊なデータ型を提供します。- データの整理や効率的な操作が可能になり、特に辞書の拡張機能が便利です。
- 主なコンポーネントには
Counter,defaultdict,OrderedDict,deque,namedtupleなどがあります。
インストール方法
collections は Python の標準ライブラリなので、追加のインストールは不要です。
import collections
import collections
text = "banana apple banana orange apple banana"
word_count = collections.Counter(text.split())
print(word_count)
import collections
default_dict = collections.defaultdict(int)
words = ["apple", "banana", "apple", "orange", "banana", "apple"]
for word in words:
default_dict[word] += 1
print(default_dict)
import collections
ordered_dict = collections.OrderedDict()
ordered_dict["banana"] = 3
ordered_dict["apple"] = 2
ordered_dict["orange"] = 1
print(ordered_dict)
import collections
deque_list = collections.deque(["apple", "banana", "orange"])
deque_list.append("grape") # 末尾に追加
deque_list.appendleft("cherry") # 先頭に追加
print(deque_list)
# 先頭と末尾の要素を削除
deque_list.pop()
deque_list.popleft()
print(deque_list)
import collections
Person = collections.namedtuple("Person", ["name", "age", "city"])
user = Person("Alice", 25, "Tokyo")
print(user.name, user.age, user.city)
import collections
dict1 = {"name": "Alice", "age": 25}
dict2 = {"city": "Tokyo", "country": "Japan"}
combined = collections.ChainMap(dict1, dict2)
print(combined["name"], combined["city"]) # Alice Tokyo
from collections import namedtuple
Person = namedtuple("Person", ["name", "age", "city"])
p = Person("Bob", 30, "Osaka")
print(p.name, p.age, p.city) # Bob 30 Osaka
import collections
data = [("fruit", "apple"), ("fruit", "banana"), ("veg", "carrot")]
grouped = collections.defaultdict(list)
for key, value in data:
grouped[key].append(value)
print(grouped) # {'fruit': ['apple', 'banana'], 'veg': ['carrot']}
import collections
stack = collections.deque()
stack.append("task1")
stack.append("task2")
print(stack.pop()) # task2
import collections
queue = collections.deque()
queue.append("task1")
queue.append("task2")
print(queue.popleft()) # task1