返す配列が空かどうかを確認しようとしています。
私が試しているコードは次のとおりです。
if (r.json()['negative'][0]['topic']) == "":
私が得ているエラーは、インデックスが範囲外のエラーです。
配列に何もないことを意味することはわかっていますが、何も返さないため、コードがクラッシュしています。
何か案は?
返す配列が空かどうかを確認しようとしています。
私が試しているコードは次のとおりです。
if (r.json()['negative'][0]['topic']) == "":
私が得ているエラーは、インデックスが範囲外のエラーです。
配列に何もないことを意味することはわかっていますが、何も返さないため、コードがクラッシュしています。
何か案は?
コードが失敗する原因となっている空の配列 r.json()['negative'] から最初の要素にアクセスしようとしています。
「負の」キーが空の配列でないかどうかを確認してから、状態を確認してください。
if (r.json()['negative']:
if (r.json()['negative'][0]['topic']) == "":
すべてを 1 行にまとめないでください。正確に何が起こっているのかを知る能力が失われます。
data = r.json()
if 'negative' not in data:
print('negative key is missing')
elif len(data['negative']) == 0:
print('no items in the negative list')
elif 'topic' not in data['negative'][0]:
print('topic is missing')
elif data['negative'][0]['topic'] == '':
print('topic is empty')
else:
# now you can access it safely
print(data['negative'][0]['topic'])
辞書のリスト内の辞書のセットに 3 深く入っているので、他の人が提案したように、ほぼ確実に各コンテナーの長さを確認する (またはキーが辞書にあることを確認する) 必要があります。例外をキャプチャして先に進むために、一部の人がよりPythonicを使用しています。
try:
if (r.json()['negative'][0]['topic']) == "":
# do stuff
except IndexError:
# do other stuff
これIt is better to ask forgiveness than to ask permission
が一般的に使われている原則です。