多级配置使用config.setdefault()



我正在寻找一种使用config.setdefault()方法处理多级字典的简单方法。下面是一个例子:

config = {}
config.setdefault("key1", 10)
config.setdefault("key2", {'x': 1, 'y': 2})
config.setdefault("key3", 5)

对于"key2",我想为'x''y'键设置默认值。这可能吗?如果我需要澄清我的问题,请告诉我。

.setdefault()不是这样工作的。它接受单个值参数。

可以使用.update(new_dict)来合并新的键/值对。但如果它列出了任何已存在的密钥,现有的值将被覆盖。所以这不是完全正确的。

您正在寻找"合并字典"。我们构造了一个新的字典,并给出了旧的config覆盖任何新建议值的机会。注意,c保留了原来的值。

>>> config = dict(c=1)
>>> config = {**{'x': 2, 'y': 3, 'c': 4}, **config}
>>> config
{'x': 2, 'y': 3, 'c': 1}

如果你有字典ab

{**a, **b}

将合并它们。

我要在这里回答我自己的问题,这是一个比我想象的更简单的解决方案。下面的代码完成了我想要的。

config = {}
config.setdefault("key1", 10)
config.setdefault("key2", {}).setdefault('x', 1)
config.setdefault("key2", {}).setdefault('y', 2)
config.setdefault("key3", 5)
print(config)
{'key1': 10, 'key2': {'x': 1, 'y': 2}, 'key3': 5}

相关内容

  • 没有找到相关文章