如何用config.setdefault()处理多级字典并设置嵌套键默认值?
使用setdefault()处理多级字典的默认值
当然可行,你可以通过嵌套调用setdefault()来实现多级字典的默认值设置。核心思路是先确保外层键(比如"key2")对应的字典存在,再对这个子字典的键设置默认值。
具体实现代码
config = {} # 设置外层键的默认值 config.setdefault("key1", 10) # 确保key2对应字典存在,不存在则创建空字典 config.setdefault("key2", {}) # 给key2子字典的x、y设置默认值 config["key2"].setdefault("x", 1) config["key2"].setdefault("y", 2) config.setdefault("key3", 5)
说明
config.setdefault("key2", {})的作用是保证"key2"对应的是字典类型:如果之前没设置过该键,就创建一个空字典;如果已存在,保留原有值。这一步能避免直接访问config["key2"]时抛出KeyError。- 对
config["key2"]调用setdefault()时,若子键(x、y)已存在,不会覆盖原有值;若不存在,则设置你指定的默认值。
如果想要更简洁的写法,也可以把两步合并成一行:
config.setdefault("key2", {}).setdefault("x", 1) config.setdefault("key2", {}).setdefault("y", 2)
这种写法无需单独初始化key2的字典,每次调用都会先确保key2存在,再设置子键的默认值。
内容的提问来源于stack exchange,提问作者Knova
相关产品推荐
相关产品推荐

