【Python】Counter()でリストなどの各要素の出現個数を調べる!

Pythonで指定した文字で置換するにはcollectonsのCounter()を使用します。

Counter()は各要素の出現回数を一括で取得することができる関数であり、collectionsというライブラリをインポートすることで使用することができます。

リストなどの要素の個数を調べるにはlen()を使用すればと思いがちですが、len()は「リスト全体の要素数」を調べるだけで、「何が何個あるのか」まではわかりません。

しかし、collectonsのCounter()はリスト内に「何が何個あるのか」という各要素の個数をそれぞれ調べてくれるので個々の要素数まで明確になります。

また、リストのような複数のデータ型だけでなく、文字列の文字の出現個数も調べることができますので、オブジェクトの要素数や文字数までチェックしたい場合はcollectonsのCounter()を使用しましょう。

今回はPythonのCounter()でリストなどの各要素の出現個数を調べる方法について以下の内容で解説していきます。

⚫︎ リスト(list)の各要素の出現個数を調べる場合
⚫︎ タプル(tuple)の各要素の出現個数を調べる場合
⚫︎ 辞書(dict)の各要素の出現個数を調べる場合
⚫︎ set(集合)型の各要素の出現個数を調べる場合

⚫︎ 二次元リストの各要素の出現個数を調べる場合
⚫︎ 三次元リストの各要素の出現個数を調べる場合

⚫︎ Counter()で文字列の文字の出現回数を調べる方法

Counter()とは

Counter()とは、指定したデータの各要素の出現回数を調べることができる関数であり、リストやタプルなどのデータに「何が何個入っているのか」を調べることができます。

しかし、この関数は初期状態のPythonでは順されておらず、collectionsというライブラリをインポートすることで使用することができます。

Counter()の書き方

Counter()の構文は下記となります。

Counter()を使用するにはまず、collectionsをインポートすることで、Counter()を使用することができます。

Counter()のパラメータ

⚫︎ 各要素の出現個数を調べたいデータ:
各要素の出現個数を調べたいデータをリストなどの複数のデータ型で指定する

Counter()のパラメータに各要素の出現個数を調べたいデータを指定することで指定したデータの中にある各要素の出現個数を調べることができます。
パラメータであるデータはリストやタプル、辞書などを指定することができます。

そして、Counter()によって各要素の出現個数を調べた後は「collections.Counter」という型の辞書型で結果を返すようになります。

リストなどの各要素の出現個数を調べるサンプルコード

リストなどの各要素の出現個数を調べるサンプルコードを紹介します。

リスト(list)の各要素の出現個数を調べる場合

Counter()でリスト(list)の各要素の出現個数を調べる場合を見てみます。

出力結果

・Counter()使用前
[‘リンゴ’, ‘りんご’, ‘バナナ’, ‘ばなな’, ‘りんご’, ‘ばなな’, ‘いちご’]
<class ‘list’>

・Counter()使用後
Counter({‘りんご’: 2, ‘ばなな’: 2, ‘リンゴ’: 1, ‘バナナ’: 1, ‘いちご’: 1})
<class ‘collections.Counter’>

Counter()でリスト(list)の各要素の出現個数を調べています。

そのため、リスト内の各要素の出現回数がカウントされて表示されています。

タプル(tuple)の各要素の出現個数を調べる場合

Counter()でタプル(tuple)の各要素の出現個数を調べる場合を見てみます。

出力結果

・Counter()使用前
(‘リンゴ’, ‘りんご’, ‘バナナ’, ‘ばなな’, ‘りんご’, ‘ばなな’, ‘いちご’)
<class ‘tuple’>

・Counter()使用後
Counter({‘りんご’: 2, ‘ばなな’: 2, ‘リンゴ’: 1, ‘バナナ’: 1, ‘いちご’: 1})
<class ‘collections.Counter’>

Counter()でタプル(tuple)の各要素の出現個数を調べています。

そのため、タプル内の各要素の出現回数がカウントされて表示されています。

辞書(dict)の各要素の出現個数を調べる場合

Counter()で辞書(dict)の各要素の出現個数を調べる場合を見てみます。

出力結果

・Counter()使用前
dict_keys([1, 2, 3, 4, 5])
dict_values([‘りんご’, ‘ばなな’, ‘リンゴ’, ‘バナナ’, ‘いちご’])
<class ‘dict’>

・Counter()使用後
Counter({1: 1, 2: 1, 3: 1, 4: 1, 5: 1})
<class ‘collections.Counter’>
Counter({‘りんご’: 1, ‘ばなな’: 1, ‘リンゴ’: 1, ‘バナナ’: 1, ‘いちご’: 1})
<class ‘collections.Counter’>
Counter({(1, ‘りんご’): 1, (2, ‘ばなな’): 1, (3, ‘リンゴ’): 1, (4, ‘バナナ’): 1, (5, ‘いちご’): 1})
<class ‘collections.Counter’>

Counter()で辞書(dict)の各要素の出現個数を調べています。

そのため、辞書内のキーと値の出現回数がカウントされて表示されています。

set(集合)型の各要素の出現個数を調べる場合

Counter()でset(集合)型の各要素の出現個数を調べる場合を見てみます。

出力結果

・Counter()使用前
{‘いちご’, ‘リンゴ’, ‘りんご’, ‘バナナ’, ‘ばなな’}
<class ‘set’>

・Counter()使用後
Counter({‘いちご’: 1, ‘リンゴ’: 1, ‘りんご’: 1, ‘バナナ’: 1, ‘ばなな’: 1})
<class ‘collections.Counter’>

Counter()でset(集合)型の各要素の出現個数を調べています。

set型は重複する要素を数えない為、set型内に1つ以上ある各要素の出現回数が「1」としてカウントされ、表示されています。

多次元のリストなどの各要素の出現個数を調べるサンプルコード

多次元のリストなどの各要素の出現個数を調べるサンプルコードを紹介します。
今回は多次元のリストの各要素の出現個数を調べてみます。

二次元リストの各要素の出現個数を調べる場合

Counter()で二次元リストの各要素の出現個数を調べる場合を見てみます。

出力結果

・Counter()使用前
[[‘リンゴ’, ‘りんご’], [‘バナナ’, ‘ばなな’], [‘イチゴ’, ‘いちご’], [‘りんご’, ‘ばなな’, ‘いちご’]]
<class ‘list’>

・Counter()使用後
Counter({‘リンゴ’: 1, ‘りんご’: 1})
<class ‘collections.Counter’>
Counter({‘りんご’: 1, ‘ばなな’: 1, ‘いちご’: 1})
<class ‘collections.Counter’>

Counter()で二次元のリストの各要素の出現個数を調べています。

そのため、二次元のリスト中にあるリストの要素の出現回数がカウントされて表示されています。

三次元リストの各要素の出現個数を調べる場合

Counter()で三次元リストの各要素の出現個数を調べる場合を見てみます。

出力結果

・Counter()使用前
[[[‘リンゴ’, ‘りんご’], [‘バナナ’, ‘ばなな’]], [[‘イチゴ’, ‘いちご’], [‘マスカット’, ‘マスカット’, ‘いちご’, ‘イチゴ’]]]
<class ‘list’>

・Counter()使用後
Counter({‘リンゴ’: 1, ‘りんご’: 1})
<class ‘collections.Counter’>
Counter({‘マスカット’: 2, ‘いちご’: 1, ‘イチゴ’: 1})
<class ‘collections.Counter’>

Counter()で三次元のリストの各要素の出現個数を調べています。

そのため、三次元のリスト中にあるリストの要素の出現回数がカウントされて表示されています。

Counter()で文字列の文字の出現回数を調べる方法

Counter()はリストのような複数のデータ型だけではなく、文字列中の文字の出現回数を調べることもできます。

出力結果

・Counter()使用前
にわにはにわにわとりがいる
<class ‘str’>

・Counter()使用後
Counter({‘に’: 4, ‘わ’: 3, ‘は’: 1, ‘と’: 1, ‘り’: 1, ‘が’: 1, ‘い’: 1, ‘る’: 1})
<class ‘collections.Counter’>

Counter()で文字列中の文字の出現個数を調べています。

そのため、「に」が4つ、「わ」が3つ、「は」と「と」と「り」と「が」と「い」と「る」は1つとカウントされて表示されています。

今回のポイント

Counter()でリストなどの各要素の出現個数を調べる

⚫︎ Pythonでリストなどの各要素の出現個数を調べるにはcollectionsライブラリのCounter()を使用する

⚫︎ Counter()はリストなどの複数のデータ型の各要素の出現回数を調べることができる
(リストやタプル、辞書、set型など)

⚫︎ Counter()は二次元、三次元リストなどの多次元の複数のデータ型の各要素の出現回数も調べることができる

⚫︎ Counter()は文字列中の文字の出現回数も調べることができる

Writer
壷井

壷井

株式会社flyhawkの壷井です。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報

フリーランスエンジニアの案件探し