私が取り組んでいるプロジェクトでは、深くネストされた辞書とリストのデータ構造を多数処理しています。多くの場合、単一のメンバーを含むリストを返すことを期待してルックアップを行っていることに気付きます。ルックアップは完全に失敗するか、まったく結果を返さない可能性があるため、次のようなコードを記述できます。
try:
value_I_need = lookup_results[0]
except IndexError:
# handle lookup failure, keep going
しかし最近、最初はループが 0 回または 1 回しか発生しないと仮定して、ループを作成する方が将来性があるかどうか疑問に思っていました。
value_I_need = None
for value_I_need in lookup_results:
break
if value_I_need is None:
# handle lookup failure, keep going
(複数の結果を含むルックアップを処理するために、このコードを書き直したり一般化したりする可能性があるため、「将来性がある」と言います。) これらの 2 つのアプローチのいずれかについて、本質的に非 Pythonic、間違った、または遅いものはありますか?