Каков самый pythonic способ установить значение в dict
, если значение еще не установлено?
В настоящий момент мой код использует операторы if:
if "timeout" not in connection_settings:
connection_settings["timeout"] = compute_default_timeout(connection_settings)
dict.get(key,default)
подходит для кода, потребляющего dict, а не для кода, который готовит dict для передачи другой функции. Вы можете использовать его, чтобы установить что-то, но не более красивое imo:
connection_settings["timeout"] = connection_settings.get("timeout", \
compute_default_timeout(connection_settings))
будет вычислять вычислительную функцию, даже если ключ содержал ключ; ошибка.
Defaultdict - это значения по умолчанию одинаковые.
Конечно, вы много раз устанавливаете примитивные значения, которые не нужны для вычислений как значения по умолчанию, и они могут, конечно, использовать dict.setdefault
. Но как насчет более сложных случаев?