あれもPython,これもPython

Pythonメモ※本サイトはアフィリエイトを利用しています

Pythonでデータをカウントしたいなら:collections.Counter()が便利

Pythonでリストの中のデータを数えたい場合があります。

Pythonでデータを数えたい

数えたいデータが一種類で、既に決まっているなら、count()を使えば楽です。

dat = ["北海道","静岡","宮城","宮崎","静岡"]

print dat.count("静岡")
#2

数えるデータが決まっていれば、複数でもループで対応可能です。

dat = ["北海道","静岡","宮城","宮崎","静岡"]
count_header = ["北海道","宮崎","宮城"]

result = {k:dat.count(k) for k in count_header}
print result

しかし、数えるためのデータが動的である場合は、、
一度ヘッダーデータをつくるなどめんどくさくなります。

collections.Counterを使用する

そういう時には標準モジュールのcollectionsのCounterを使用すると簡単です。
※collectionsは辞書を拡張したクラスが多く含まれています

collectionsはsが必要で、
CounterはCが大文字であることに注意してください。

from collections import Counter
dat = ["北海道","静岡","宮城","宮崎","静岡"]

cnt_dat = collections.Counter()
for d in dat:
    cnt_data["d"] += 1

print cnt_dat

collectionsは辞書型でデータを持ちますが、
キーに存在しないデータが現れた場合、
キーにそのデータ、バリューに0を自動で追加してくれます。

表示する場合などは、普通の辞書型と同じように扱えます。

for key,value in cnt_dat.items():
    print key,value