動作検証バージョン: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)
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
[スポンサードリンク]