我有一个字典和一个描述路径的列表。我想创建一个字典,将字典写入路径。例如:
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
,d
和k
有更有意义的名字会更好。
另一种可能的实现是使用递归:
def wrap_dict(path, content):
if not path:
return content
return {path[0]: wrap_dict(path[1:], content)}
我认为这将更容易维护,尽管我猜它会稍微降低性能。但是,如果您希望拥有包含数千个项的路径,则可能会遇到递归限制。