{category}

Python - その他

collections

コレクションズ(標準ライブラリ

意味 特殊なデータ構造


collectionsとは?

Pythonの標準的なリストや辞書以外にも、特殊な機能を持ったデータ構造を使いたい場合があります。collectionsモジュールは、そんな便利なデータ構造をたくさん用意しています。例えば、要素の出現回数を数えるCounterや、要素の追加順序を保持するOrderedDictなどがあります。

collectionsの具体的な使い方

要素の数え上げと最頻値の取得

from collections import Counter

# テキストデータ
text = "私はPythonが好きです。Pythonは簡単で強力な言語です。私はPythonでプログラミングを学んでいます。"

# 単語の出現回数をカウント
words = text.split()
word_counts = Counter(words)

print("単語の出現回数:")
for word, count in word_counts.items():
    print(f"{word}: {count}回")

# 最も頻出する単語を取得
most_common = word_counts.most_common(3)
print("\n最も頻出する3つの単語:")
for word, count in most_common:
    print(f"{word}: {count}回")

👇出力結果

単語の出現回数:
私は: 2回
Pythonが: 1回
好きです。Pythonは: 1回
簡単で: 1回
強力な: 1回
言語です。私はPythonでプログラミングを: 1回
学んでいます。: 1回

最も頻出する3つの単語:
私は: 2回
Pythonが: 1回
好きです。Pythonは: 1回

この例では、collections.Counterを使用してテキスト内の単語の出現回数を数え、最も頻出する単語を特定しています。Counterは辞書のようなオブジェクトで、要素の出現回数を簡単に数えることができます。また、most_commonメソッドを使用すると、最も頻出する要素を簡単に取得できます。

双方向キューの使用例

from collections import deque

# 双方向キューの作成
queue = deque(['Task 1', 'Task 2', 'Task 3'])

print("初期のキュー:", queue)

# 先頭に要素を追加
queue.appendleft('New Task')
print("先頭に追加後:", queue)

# 末尾に要素を追加
queue.append('Last Task')
print("末尾に追加後:", queue)

# 先頭の要素を取り出す
first_task = queue.popleft()
print(f"取り出したタスク: {first_task}")
print("先頭から取り出し後:", queue)

# 末尾の要素を取り出す
last_task = queue.pop()
print(f"取り出したタスク: {last_task}")
print("末尾から取り出し後:", queue)

👇出力結果

初期のキュー: deque(['Task 1', 'Task 2', 'Task 3'])
先頭に追加後: deque(['New Task', 'Task 1', 'Task 2', 'Task 3'])
末尾に追加後: deque(['New Task', 'Task 1', 'Task 2', 'Task 3', 'Last Task'])
取り出したタスク: New Task
先頭から取り出し後: deque(['Task 1', 'Task 2', 'Task 3', 'Last Task'])
取り出したタスク: Last Task
末尾から取り出し後: deque(['Task 1', 'Task 2', 'Task 3'])

この例では、collections.dequeを使用して双方向キュー(両端キュー)を実装しています。dequeは両端から効率的に要素の追加と削除ができるデータ構造です。appendleftとappendで両端に要素を追加し、popleftとpopで両端から要素を取り出すことができます。これは、タスク管理やキャッシュの実装など、両端からの操作が必要な場面で特に有用です。

collectionsに関するよくある質問

Q. Counterの主な用途は?
A. Counterの主な用途は、イテラブルオブジェクト(リストや文字列など)内の要素の出現回数を数えることです。テキスト分析や、データの頻度分布を調べる際によく使用されます。
Q. defaultdictの利点は?
A. defaultdictの主な利点は、存在しないキーにアクセスしたときに自動的にデフォルト値を生成することです。これにより、キーの存在チェックや初期化のためのコードが不要になり、より簡潔で読みやすいコードを書くことができます。
Q. collectionsの他の便利な型は?
A. collectionsモジュールには他にも便利なデータ型があります。例えば、OrderedDict(要素の挿入順序を記憶する辞書)、deque(両端キュー)、namedtuple(名前付きフィールドを持つタプル)などがあります。これらは特定の用途に応じて設計されており、適切に使用することでコードの効率と可読性を向上させることができます。

collectionsが学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、Pythonのcollectionsやre.match、datetime、unittest、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


Pythonを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!Pythonはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

re.match

文字列の先頭一致

種類: 正規表現

datetime

日付と時刻を扱う

種類: 日付と時間

unittest

プログラムの動作確認

種類: テスト

memoryview

データのメモリ上への参照

種類: メモリビュー型

wxpython

PythonでGUIを作るためのクロスプラットフォームな選択肢

種類: GUIフレームワーク