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