Home » Python » Pythonなら文字ごとのカウントも簡単-collections.Counter

Pythonなら文字ごとのカウントも簡単-collections.Counter

動作検証バージョン:Windows 11 Home + Python 3.10.11

Pythonでは、str.countメソッドを使うことで、特定の文字・文字列のカウントができることを紹介しました。

何らかの文字列に含まれる、すべての文字の、文字ごとの個数を数えるのも、Pythonなら簡単です。

[スポンサードリンク]

文字ごとのカウントを行うサンプル

以下のコードを実行すると、文字列「Hello, World!」に含まれる文字ごとの個数が出力されます。

import collections

cnt = collections.Counter('Hello, World!')
for k, v in cnt.items():
    print(k, v)

出力結果は以下のとおりです。

H 1
e 1
l 3
o 2
, 1
1
W 1
r 1
d 1
! 1

各文字と、その個数が出力されています。

サンプルコードで行っている処理

上記のサンプルコードで行っている処理は以下のとおりです。

collectionsのインポート

まず、標準ライブラリのcollectionsモジュールをインポートします。

import collections

collections.Counterクラスとは

ポイントは、次の

cnt = collections.Counter('Hello, World!')

です。
collections.Couterクラスを使ったコードです。

先ほどのコードを実行した後に、拙著でも多用しているIDLEのShellウィンドウで、type関数の引数に変数cntを指定すると、以下のようにデータ型を確認できます。

>>> type(cnt)
<class 'collections.Counter'>

collections.Counterクラスの公式ドキュメントに、
「ハッシュ可能 なオブジェクトをカウントする dict のサブクラスです。」
と書かれているので、issubclass関数で調べてみると、確かにTrueが返されます。

>>> issubclass(collections.Counter, dict)
True

また変数cntを出力してみると、以下のような結果を得られます。

>>> cnt
Counter({'l': 3, 'o': 2, 'H': 1, 'e': 1, ',': 1, ' ': 1, 'W': 1, 'r': 1, 'd': 1, '!': 1})

keyとvalueの出力

この、ディクショナリ(辞書)的なデータ・collections.Counterオブジェクトから、itemsメソッドを使ってkeyとvalueを取得して、出力を行っています。

for k, v in cnt.items():
    print(k, v)

最終更新日時:2024-01-02 11:22

[スポンサードリンク]

Home » Python » Pythonなら文字ごとのカウントも簡単-collections.Counter

「Python」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.