次のデータを含む次の辞書があります。
response = {"status":"ERROR","email":"EMAIL_INVALID","name":"NAME_INVALID"}
次のようになると思われる「応答」に基づいて新しい辞書を作成しようとしています。
{'api_error': {'list': [{'converted_value': 'No special characters allowed.',
'field': 'name',
'value': 'NAME_INVALID'},
{'converted_value': 'invalid email',
'field': 'email',
'value': 'EMAIL_INVALID'}],
'status': 'ERROR'},
'email': 'EMAIL_INVALID',
'email_label': 'invalid email',
'name': 'NAME_INVALID',
'name_label': 'No special characters allowed.',
'status': 'ERROR'}
これまでのところ、次のことができました。
ret = {}
for k in response:
if k != 'status':
ret[k+"_label"] = convert(response[k])
ret[k] = response[k]
else:
ret[k] = convert(response[k])
ここで、'convert' 関数は応答の各値を変換します。たとえば、NAME_INVALID は「特殊文字は使用できません」に変換されます。等々。上記のコードが行っていることの出力は次のとおりです。
{"status":"ERROR","name_label":"No special characters allowed.",
"email_label":"invalid email","name":"NAME_INVALID","email":"EMAIL_INVALID"}
残りの辞書を作成する際に問題が発生しています。キーが「api_error」のもの。それを行う最も効率的な方法は何ですか?