変数がまだ存在しない場合にのみ変数を定義するという問題に対するさまざまな1行の解決策を試していたところ、Pythonが辞書とリスト/タプルを異なる方法で処理することに気付きました。これらのエラーは私には完全に類似しているように見えるので、なぜ矛盾があるのか混乱しています.
ディクショナリ キーのエラー処理
existing_dict = {"spam": 1, "eggs": 2}
existing_dict["foo"] = existing_dict["foo"] if not KeyError else 3
戻り値{"spam": 1, "eggs": 2, "foo": 3}
左側と右側の両方で存在しないキーを参照していることに注意してください。Python は、KeyError が出現するどちらの句でも問題なく KeyError を処理します。
List IndexError 処理(タプルにも当てはまります)
existing_list = ["spam","eggs"]
existing_list[2] = existing_list[2] if not IndexError else ["foo"]
戻り値IndexError: list assignment index out of range
この特定のエラーを回避することはまったく難しいことではありません (ここで回答) が、これらのケースに違いがある理由に興味があります。どちらの状況でも、担当者/割り当て句の両方にエラーがあり、「そうでない場合」のエラーキャッチが1つあるようです。