Pythonのcountメソッドを使う方法をわかりやすく解説
- 作成日: 2021-05-05
- 更新日: 2023-12-24
- カテゴリ: Python
Pythonのcountメソッドの使い方
Pythonには文字列やリスト、タプルなどのオブジェクトの持つ要素をカウントするメソッドcount()
があります。
このcount()
を使うことでオブジェクト内の指定の要素の数をカウントすることができます。
この記事では↓の項目について解説します。
- カウントの定義
- count()の構造
- 文字列の特定の文字のカウント
- リストの特定の要素のカウント
- タプルの特定の要素のカウント
- 辞書のカウント
- collections.Counterを使ったカウント
カウントの定義
この記事で扱う「カウント」の定義とは、特定のオブジェクト内に指定の要素がいくつ存在するかということになります。
たとえば↓のような文字列があるとします。
'aaabbc'
この文字列内のb
の文字を数えると、その数は2
になります。
これは「文字列の特定の文字をカウントする」という意味になります。
この記事での「カウント」はこのような意味で扱います。
文字列の特定の文字のカウント
文字列でカウントするには文字列のメソッドcount()
を使います。
str.count()の構造
str.count()
は↓のような構造になっています。
count(sub[, start[, end]])
sub
にはカウントしたい要素を指定します。
オプションのstart
にはカウントを始めたいオブジェクト内の位置を指定します。
オプションのend
にはカウントを終了させたいオブジェクト内の位置を指定します。
start
とend
はカウントする範囲です。
たとえばstart
に3
, end
に5
を指定した場合、count()
はオブジェクト内の3
から5
の範囲でカウントします。
これはリストであれば添え字に相当します。
count()
は返り値としてint
を返します。
これはカウント数です。
特定の文字をカウントする
↓のような文字列があるとして、
s = 'aaabbcaa'
この文字列にはcount()
メソッドがあります。
print(type(s.count))
# <class 'builtin_function_or_method'>
指定の文字、たとえばa
をカウントしたい場合、↓のようなコードになります。
n = s.count('a')
print(type(n))
# <class 'int'>
print(n)
# 5
count()
の第2引数にカウントの開始位置を指定し、第3引数を指定しないと、第2引数の開始位置から末尾までカウントします。
n = s.count('a', 3)
print(n)
# 2
count()
の第2引数と第3引数に範囲を指定すると、count()
はその範囲内でカウントします。
n = s.count('a', 3, 7)
print(n)
# 1
↑のコードを日本語にすると「3から7より下までaの数をカウント」になります。
「3から7以下」ではないので注意が必要です。
リストの特定の要素のカウント
リスト内の特定の要素をカウントしたい場合はリストのcount()
を使います。
list.count()の構造
list.count()
は↓のような構造になっています。
list.count(value, /)
list.count()
は引数x
の数をリストからカウントします。
特定の要素をカウントする
↓のようなリストがあるとして、
l = [1, 1, 1, 2, 2, 3]
このリストにはcount()
メソッドがあります。
print(type(l.count))
# <class 'builtin_function_or_method'>
特定の要素、たとえば2
の数をカウントしたい場合は↓のようにします。
n = l.count(2)
print(n)
# 2
タプルの特定の要素のカウント
タプル内の特定の要素をカウントしたい場合はタプルのcount()
を使います。
tuple.count()の構造
tuple.count()
の構造は↓のようになっています。
tuple.count(value, /)
第1引数のvalue
にはカウントしたい値を指定します。
特定の要素をカウントする
↓のようなタプルがあるとします。
t = (1, 1, 1, 2, 2, 3)
タプルにはcount()
メソッドが存在します。
print(type(t.count))
# <class 'builtin_function_or_method'>
特定の要素、たとえば3
をカウントしたい場合は↓のようなコードになります。
n = t.count(3)
print(n)
# 1
辞書のカウント
辞書のカウントはひと手間必要です。
というのも、辞書にはcount()
がないためです。
もちろんitems()
やkeys()
やvalues()
などの結果のオブジェクトにもありません。
↓のコードで確認できます。
d = {'a': 1, 'a': 2, 'b': 2}
try:
d.count('a')
except AttributeError as e:
print(e)
# 'dict' object has no attribute 'count'
try:
d.items().count()
except AttributeError as e:
print(e)
# 'dict_items' object has no attribute 'count'
try:
d.keys().count()
except AttributeError as e:
print(e)
# 'dict_keys' object has no attribute 'count'
try:
d.values().count()
except AttributeError as e:
print(e)
# 'dict_values' object has no attribute 'count'
keys()
やvalues()
の結果はリストに変換することが可能です。
そのためキーや値をカウントしたい場合は↓のようなコードを書きます。
n = list(d.keys()).count('a')
print(n)
# 1
# 重複したキーは除外されているため1になる
n = list(d.values()).count(2)
print(n)
# 2
collections.Counterを使ったカウント
Pythonの標準ライブラリであるcollections.Counter
を使うと統計的なカウントを取ることができます。
from collections import Counter
l = ['a', 'a', 'a', 'b', 'b', 'c']
c = Counter(l)
print(c)
# Counter({'a': 3, 'b': 2, 'c': 1})
print(c['a'])
# 3
print(c['b'])
# 2
print(c['c'])
# 1
↑のようにCounter()
にカウントさせたいオブジェクトを渡します。
Counter()
は辞書のようなインターフェースを持っています。
参照したいキーを角カッコで参照することで、そのキーのカウント数を得ることができます。
↑の場合だとa
のカウント数は3
, b
のカウント数は2
, c
のカウント数は1
になっています。
これはリストl
のカウントの結果です。
おわりに
今回はPythonのcount()
の使い方を解説しました。
🦝 < カウントして現状を把握
🐭 < カウント王に俺はなる