我有这样的结构:
{
"content": "Name 1",
"name": "directory",
"decendent": [
{
"content": "Name 2",
"name": "subdirectory",
"decendent": None
},
{
"content": "Name 3",
"name": "subdirectory_two",
"decendent": [
{
"content": "Name 4",
"name": "subsubdirectory",
"decendent": None
}
]
}
]
}
我必须寻找名称(名称是一个字符串并且是唯一的),如果我找到它 - 将整个字典保存在其他变量中。 E.g:
我正在寻找"子目录",我应该得到:
{
"content": "Name 2",
"name": "subdirectory",
"decendent": None
}
并将其保存在变量中。
如何在Python中执行此搜索?
答案 0 :(得分:3)
您可以使用递归函数检查当前字典的名称,如果该名称匹配则返回字典,否则尝试“后代”(如果有),如果匹配则返回。
def find_name(d, name):
if d["name"] == name:
return d
for d2 in d["decendent"] or []:
res = find_name(d2, name)
if res:
return res
示例:
>>> dictionary = { your dictionary }
>>> print find_name(dictionary, "subdirectory")
{'content': 'Name 2', 'name': 'subdirectory', 'decendent': None}