English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Pythonの辞書でキーが欠けている場合の処理

Pythonには、ディクショナリと呼ばれるコンテナがあります。ディクショナリでは、キーを値にマッピングできます。ディクショナリを使用すると、恒常時間で値にアクセスできますが、指定されたキーが存在しない場合、エラーが発生する可能性があります。

このセクションでは、このようなエラーをどのように処理するかを見てみましょう。失ったキーにアクセスしようとすると、このようなエラーが返されることがあります。

サンプルコード

country_dict = {'India': 'IN', 'Australia': 'AU', 'Brazil': 'BR'}
print(country_dict['Australia'])
print(country_dict['Canada']) # This will return error

出力結果

AU
---------------------------------------------------------------------------
KeyErrorTraceback (most recent call last)
<ipython-input-2-a91092e7ee85> in <module>()
      2 
      3 print(country_dict['Australia'])
----> 4 print(country_dict['Canada'])# This will return error
KeyError: 'Canada'

を使用してget()MethodはKeyErrorを処理

getメソッドを使用してキーを確認することができます。このメソッドには2つのパラメータがあります。1つ目はキー、2つ目はデフォルト値です。キーを見つけると、それに対応する値が返されますが、キーが存在しない場合、デフォルト値が返されます。このデフォルト値は、2つ目のパラメータとして渡されます。

サンプルコード

country_dict = {'India': 'IN', 'Australia': 'AU', 'Brazil': 'BR'}
print(country_dict.get('Australia', '見つかりません'))
print(country_dict.get('Canada', '見つかりません'))

出力結果

AU
見つかりません

を使用してsetdefault()MethodはKeyErrorを処理

このsetdefault()メソッドは以下のように似ています。get()メソッド。それも2つの引数が必要です。get()。最初のものはキー、次のものはデフォルトの値です。このメソッドの唯一の違いは、キーが欠けている場合、デフォルトの値を持つ新しいキーを追加することです。

サンプルコード

country_dict = {'India': 'IN', 'Australia': 'AU', 'Brazil': 'BR'}
country_dict.setdefault('Canada', '存在しません') # カナダに対するデフォルトの値を設定
print(country_dict['Australia'])
print(country_dict['Canada'])

出力結果

AU
存在しません

defaultdictの使用

defaultdictはコンテナです。それはPythonのcollectionsモジュールに位置しています。defaultdictは引数としてデフォルトのファクトリを使用します。最初はデフォルトのファクトリは0(整数)です。キーが存在しない場合、デフォルトのファクトリの値を返します。

私たちは一度ずつメソッドを指定する必要はありませんので、辞書オブジェクトにより速いメソッドを提供します。

サンプルコード

import collections as col
#デフォルトのファクトリを文字列'キーは存在しません'で設定
country_dict = col.defaultdict(lambda: 'キーは存在しません')
country_dict['India'] = 'IN'
country_dict['Australia'] = 'AU'
country_dict['Brazil'] = 'BR'
print(country_dict['Australia'])
print(country_dict['Canada'])

出力結果

AU
キーは存在しません
おすすめ