値がまだ設定されていない場合に値を設定する最もpythonicな方法は何ですか?dict
現時点では、私のコードは if ステートメントを使用しています:
if "timeout" not in connection_settings:
connection_settings["timeout"] = compute_default_timeout(connection_settings)
dict.get(key,default)
別の関数に渡される辞書を準備しているコードではなく、辞書を消費するコードに適しています。あなたは何かを設定するためにそれを使うことができますが、それはそれほどきれいではありません:
connection_settings["timeout"] = connection_settings.get("timeout", \
compute_default_timeout(connection_settings))
dict にキーが含まれていても、compute 関数を評価します。バグ。
Defaultdict は、デフォルト値が同じ場合です。
もちろん、計算を必要としないプリミティブな値をデフォルトとして設定することはよくあります。もちろん、それらは を使用できますdict.setdefault
。しかし、より複雑なケースはどうでしょうか?