[解決済み] if key in dict` vs. `try/except` - どちらがより読みやすいイディオムなのか?
2022-12-01 01:41:23
質問
イディオムと可読性について質問があるのですが、この特定のケースについてはPythonの哲学の衝突があるように思えます。
私は辞書Bから辞書Aを構築したい。もし特定のキーがBに存在しないなら、何もしないで続行する。
どちらの方法が良いのでしょうか?
try:
A["blah"] = B["blah"]
except KeyError:
pass
または
if "blah" in B:
A["blah"] = B["blah"]
"Do and ask for forgiveness" vs "simplicity and explicitness"。
どちらが良いですか、またその理由は?
どのように解決するのですか?
例外は条件文ではありません。
条件付きバージョンの方が明確です。 それは当然で、これはストレートなフロー制御であり、条件文はそのために設計されているのであって、例外のために設計されているのではありません。
例外バージョンは主にループ内でこれらのルックアップを行う際の最適化として使用されます:いくつかのアルゴリズムでは、内部ループからテストを排除することができます。 ここでは、そのような利点はありません。 小さな利点としては
"blah"
を二度言わなくてすむという小さな利点はありますが、 もしこれらの処理を大量に行うのであれば、おそらくは
move_key
関数を持つべきでしょう。
一般的には、そうしない特別な理由がない限り、デフォルトで条件付きバージョンに固執することを強くお勧めします。 条件付きは 明らかな の方法であり、これは通常、他のソリューションよりも1つのソリューションを好むことを強く推奨するものです。
関連
-
[解決済み] なぜdict[key]ではなく、dict.get(key)なのか?
-
[解決済み] すべての例外をキャッチする `try`/`except` ブロックはどのように書けばよいですか?
-
[解決済み] try/exceptを使わずに、文字列がintを表すかどうかを確認するにはどうしたらよいですか?
-
[解決済み] Pythonのリクエストモジュールを使ってtry/exceptする正しい方法?
-
[解決済み】Python。1回の試行で複数回の例外
-
[解決済み】Python try...except のカンマと 'as' を除く。
-
[解決済み】Pythonでtry-except-elseを使用するのは良い習慣ですか?
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?
-
[解決済み] 単純な文字列からtimedeltaオブジェクトを作成する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pythonのキャッシュライブラリはありますか?
-
[解決済み] Django のテストデータベースをメモリ上だけで動作させるには?
-
[解決済み] Python 3でバイナリデータを標準出力に書き込むには?
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] 範囲指定された浮動小数点数のランダムな配列を生成します。
-
[解決済み] Celeryタスクのユニットテストはどのように行うのですか?
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?
-
[解決済み] djangoのQueryDictをPythonのDictに変更するには?
-
[解決済み] Alembicアップグレードスクリプトでインサートやアップデートを実行するにはどうすればよいですか?
-
[解決済み] ネストされたキーがdictに存在するかどうかをチェックするエレガントな方法?