创建一个新的字典,将给定的字典写入给定的路径



我有一个字典和一个描述路径的列表。我想创建一个字典,将字典写入路径。例如:

dog_path = ["animals", "dog"]
dog_content = {
"legs": 4,
}
# desired output
animals = {
"animals": {
"dog": {
"legs": 4,
},
}, 
}

这是我目前所知道的。它适用于我的测试用例,但我认为也许有一种更简单、更python化的方法来做到这一点。

def wrap_dict(path, content):
if not path:
return content

res = {}
d = res
for k in path[:-1]:
d[k] = {}
d = d[k]
d[path[-1]] = content
return res

感谢任何建议!

def wrap_dict(path, content):
return {path[0]: wrap_dict(path[1:], content)} if path else content
wrap_dict(["animals", "dog"], {"legs": 4})
# returns {'animals': {'dog': {'legs': 4}}}

这是完全可以的,尽管如果res,dk有更有意义的名字会更好。

另一种可能的实现是使用递归:

def wrap_dict(path, content):
if not path:
return content
return {path[0]: wrap_dict(path[1:], content)}

我认为这将更容易维护,尽管我猜它会稍微降低性能。但是,如果您希望拥有包含数千个项的路径,则可能会遇到递归限制。

最新更新