みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
初心者&Windowsユーザー向けに、Pythonで辞書を使った集計ツールの作り方をお伝えしています。
前回の記事はコチラです。
辞書に対してforループで繰り返し処理をする方法をお伝えしました。
ところで、リストの値についてその登場回数をカウントするツールを作っているわけですが、辞書のキーとして存在していない値が登場してしまったときはどうしましょうか…?
今回は、その点を解決していきたいと思います。
つまり、辞書に指定したキーが存在するかどうかを判定して、存在しなければ辞書のキーとして追加をするという処理が必要になります。
では、Pythonで辞書にキーが存在しているかを判定する方法です。
では、行ってみましょう!
前回のおさらい
では、まず前回のおさらいからです。
作成したスクリプトはコチラです。
onigiris = ['シャケ', 'ツナ', 'ツナ', 'コンブ', 'シャケ', 'オカカ', 'シャケ', 'ツナ', 'コンブ', 'シャケ']
count = {'シャケ': 0, 'ツナ': 0 ,'コンブ': 0, 'オカカ': 0}
for onigiri in onigiris:
count[onigiri] +=1
for key, value in count.items():
print('{}: {}'.format(key, value))
リストを走査しておにぎりの種類ごとにその登場回数を調べるというものです。
今回、2行目を以下のように、空の辞書の定義に変更しちゃいます。
count = {}
それで、そのまま実行すると以下のように「シャケ」がないよなどと怒られてしまいます。
KeyError: ‘シャケ’
これをうまく動くように修正していきましょう。
キーが存在するか判定するif文
判定文なのでif文が使えそうですよね。
それで、辞書に特定のキーが含まれているかどうかは、以下の構文で判定をすることができます。
# 処理
not演算子で条件式を反転する
ですから、今回の場合は
- 辞書countのキーにおにぎりの種類が含まれていなければ
- 新たにキーを追加して、その値を1にする
とすればよいわけです。
今回は「含まれていない」ですので、not演算子を使って
# 処理
とします。
キーが含まれていなければ追加するスクリプト
スクリプトとしては以下のようになります。
onigiris = ['シャケ', 'ツナ', 'ツナ', 'コンブ', 'シャケ', 'オカカ', 'シャケ', 'ツナ', 'コンブ', 'シャケ']
count = {}
for onigiri in onigiris:
if onigiri not in count.keys():
count[onigiri] = 0
count[onigiri] +=1
for key, value in count.items():
print('{}: {}'.format(key, value))
これにて、以下のようにバッチリ集計が可能になります。
setdefaultメソッドでキーが存在しない場合のみ追加する
ですが、実はPython。
辞書にキーが存在しないときにのみキーと値のペアを新規追加するという、なんともアメージングなメソッドがあるのです。
以下のsetdefaultメソッドです。
前述のスクリプトの
if onigiri not in count.keys():
count[onigiri] = 0
という部分を、1行で表現できてしまうということになります。
setdefaultメソッドを使用したスクリプト
setdefaultメソッドを使ってスクリプトを書き換えると、以下のようになります。
onigiris = ['シャケ', 'ツナ', 'ツナ', 'コンブ', 'シャケ', 'オカカ', 'シャケ', 'ツナ', 'コンブ', 'シャケ']
count = {}
for onigiri in onigiris:
count.setdefault(onigiri, 0)
count[onigiri] +=1
for key, value in count.items():
print('{}: {}'.format(key, value))
ネストが減るのはありがたいですよね。
まとめ
以上、Pythonで辞書にキーが存在するか判定する方法、存在していなときにキーを新たに追加する方法についてお伝えしました。
- if文で辞書に指定したキーが存在するか判定をする
- not演算子を使って「含まれない」を判定する
- setdefaultメソッドでキーが存在していないときにキーと値を追加する
さて、次回は集計対象をリストではなくて、csvファイルにしたいと思います。
どうぞお楽しみに!
連載目次:初心者向けPythonで辞書を使った集計ツールの作り方
Pythonの「辞書」を使うことで、カウントや計算などの集計作業を簡単に行うことができます。本シリーズでは、辞書とは何かというところから実際にcsvファイルを集計するツールを作るところまでを伝えしていきます。