私は以下の関数を持っています:dict
を読んで、いくつかの値をローカル変数に渡し、それをタプルとして返します。複数のKeyErrorの例外を扱うもっとエレガントな方法
問題は、目的のキーの一部が辞書に存在しない可能性があることです。
これまでのところ、私はこのコードを持っていますが、私がしたいことはしていますが、それを行うもっとエレガントな方法があるのだろうかと思います。
def getNetwork(self, search):
data = self.get('ip',search)
handle = data['handle']
name = data['name']
try:
country = data['country']
except KeyError:
country = ''
try:
type = data['type']
except KeyError:
type = ''
try:
start_addr = data['startAddress']
except KeyError:
start_addr = ''
try:
end_addr = data['endAddress']
except KeyError:
end_addr = ''
try:
parent_handle = data['parentHandle']
except KeyError:
parent_handle = ''
return (handle, name, country, type, start_addr, end_addr, parent_handle)
私は一種の恐れ多数try: except:
によるが、私は、単一のtry: except:
内のすべてのaffectationsを置けば、それは最初に欠けているdictのキーにエラーが発生した後の値に影響を与えるために停止します。
" "
を追加し、成功に、各
key
のキーと
try
を反復処理でき
あなたのお答えは、両方ともあなた!後でそれをテストします。私は本当に私の問題だったので、私は実際にはget()ソリューションが好きです。文書が立っているので: >キーが辞書にある場合はkeyの値を返し、それ以外の場合はデフォルト値を返します。 defaultが指定されていない場合は、デフォルトでNoneに設定されるため、このメソッドはKeyErrorを発生させません。 –