Python

Python初学者向け:辞書型にkeyがあるかを判定して値を取得する

スポンサーリンク
 

この記事はこんな方におススメです
  • Pythonを始めたばかりで辞書型について学びたい方
  • まずおさえておく「辞書型の基本」部分だけ速習したい方

▶ 辞書型の作り方やデータの取り出し方の基本は以下の投稿をどうぞ。

はじめに

今回は辞書型から値を取り出すときのメソッドについて基本から解説をしていきます。辞書型から値を取り出すには、dic[key]の形でkeyを指定するだけです。但し、この方法では辞書型にkeyが存在しなかったときにエラーとなってしまいます。エラーが起こらないように最初にkeyが存在するかどうかを確認して、存在する場合に値を取り出すメソッドget()を解説します。

辞書型から値を取り出す

実際に試しながら見ていきましょう。まずはサンプルデータを作ります。

# 辞書型のデータを作る
animals={'らくだ':98,'ねこ':82,'しまうま':74,'とら':88,'きりん':85,'ひつじ':69}
animals

ここではanimalsという、どうぶつたちのあるテストの点数を管理する辞書型のオブジェクトを作成してみました。

keyを指定して取り出す

どうぶつたちの点数を確認するために、animalsオブジェクトにkeyを指定して値を取り出してみましょう。「らくだ」さんは何点でしょうか?

# らくだの値(点数)を取り出す
animals['らくだ']

ちゃんと98が取り出されていますね。同様にanimalsに登録のあるどうぶつたちが指定された場合はこれでも問題ありません。では、animalsに登録のない動物が指定された場合はどうなるでしょうか?たとえば、「こあら」を指定してみましょう。

# 登録のないkeyを指定
animals['こあら']

辞書に存在しないため、KeyErrorとなってしまいました。これが起きないようにするには、まずkeyが存在するかどうかを確認する必要があります。

存在しないkeyを指定した場合を考慮する

# keyの存在を確認してから値を取り出す
animal='ねこ'

if animal in animals.keys():
    print(animals[animal])
else:
    print(f'「{animal}」は登録されていません')

まずkeyが存在する場合は、正常に動きますね。次に存在しないkeyを指定してみましょう。

# keyの存在を確認してから値を取り出す
animal='こあら'

if animal in animals.keys():
    print(animals[animal])
else:
    print(f'「{animal}」は登録されていません')

こちらも正しい結果となっていますね。

get()メソッドを使って取り出す

ここまでkeyが存在しない場合を考慮して、辞書型のオブジェクトから値を取り出す方法をみてきました。if文を使った方法はわかりやすいですが、少々まどろっこしいですね。実は、辞書型にはkeyが存在しない場合を考慮して、値を取り出すことができるメソッドがあらかじめ用意されています。それがge() メソッドです。

dic.get(key,’keyが存在しなかった場合の表示’)

get() の中で第一引数としてkeyを、第二引数としてkeyがなかった場合の表記を指定するだけです。実際にやってみましょう。

# get()メソッドを用いて値を取り出す
animals.get('とら','登録されていません')

keyが存在する場合、正常に動作してますね。では、次にkeyが存在しない場合を見ておきましょう。

# get()メソッドを用いて値を取り出す
animals.get('こあら','登録されていません')

先ほどif文で記載したコードをたった1行で実現することができます。覚えておくと便利ですね!

辞書型のその他のメソッド

keys()メソッド、values()メソッド

辞書型には、登録されているkeyや値を取得するメソッドが用意されています。それがkeys()メソッドとvalues()メソッドです。これは実際にコードを見たほうがはやいですね。animalsに対してkeys()、values()を試してみましょう。

# keyを取得する
animals.keys()

animalsに登録されているkeyの一覧が取得できました。同様に値の一覧も取得することができます。

# 値を取得する
animals.values()

items()メソッド

辞書型からkeyや値の一覧を取得するメソッド、keys()、values()をみてきましたが、keyと値を同時に取得するメソッドも用意されています。それがitems()メソッドになります。

# keyと値を同時に取得する
animals.items()

このようにkeyと値が対となったタプルのリストが返されます。

辞書型を結合する

最後に辞書型を結合するupdate()メソッドも見ておきましょう。リストの結合は+演算子で簡単に結合できましたね。辞書型の場合はupdate()メソッドを使う必要があります。

# 辞書型の結合
animals.update({'こあら':77})
animals
スポンサーリンク

まとめ

今回は辞書型からkeyを指定して値をとる方法を紹介しました。if文を使えば簡単にできるのですが、get()メソッドを使うと1行で実装することができます。その他、辞書型に用意されているメソッドである、keys(), values(), items() などのkeyや値、またはその両方をいっぺんに取得するメソッドや徐庶型同士を結合するupdate()メソッドを紹介しました。

コメント

タイトルとURLをコピーしました