如何按键获取字典及其所有元素?

时间:2015-04-15 14:54:31

标签: python search dictionary

我有这样的结构:

{
    "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中执行此搜索?

1 个答案:

答案 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}