急!递归方法,从data大字典中找出特定key的value值

题目描述

从data大字典中找出特定键GlossTerm的value值

题目来源及自己的思路

题目来自面试笔试题
我的思路是先将json格式data序列化得到字典格式data
然后递归遍历
找到目标键后退出递归并返回它的值

import json
data = json.loads(data)


def get_key_node(dict_data,obj_key):
    for key,value in dict_data.items():
        if value:
            if not isinstance(value,dict):
                if key==obj_key:
                    print(value)
                    return value
            else:
                get_key_node(value,obj_key)


print(get_key_node(data,"GlossTerm"))

相关代码

data = '''{
"glossary": {
    "title": "example glossary",
    "GlossDiv": {
        "title": "S",
        "GlossList": {
            "GlossEntry": {
                "ID": "SGML",
                "SortAs": "SGML",
                "GlossTerm": "Standard Generalized Markup Language",
                "Acronym": "SGML",
                "Abbrev": "ISO 8879:1986",
                "GlossDef": {
                    "para": "A meta-markup language, used to create markup languages such as DocBook.",
                    "GlossSeeAlso": ["GML", "XML"]
                },
                "GlossSee": "markup"
            }
        }
    }
}

}'''
import json
data = json.loads(data)

def get_key_node(dict_data,obj_key):

for key,value in dict_data.items():
    if value:
        if not isinstance(value,dict):
            if key==obj_key:
                print(value)
                return value
        else:
            get_key_node(value,obj_key)

print(get_key_node(data,"GlossTerm"))

你期待的结果是什么?实际看到的错误信息又是什么?

期待的结果是

'Standard Generalized Markup Language

可我的方法结果是

None
猛跑小猪
浏览 562回答 3
3回答

翻翻过去那场雪

我记得回答过你类似的问题?基于你的代码改的 def get_dictkeys(dic, find_key): find_value = 'no' for key, value in dic.items(): if key == find_key: find_value = value elif isinstance(value, dict): find_value = get_dictkeys(value, find_key) if find_value == 'no': return 'dict doesnt have this key' else: return find_value print get_dictkeys(data, "GlossTerm")

米琪卡哇伊

试试这样: result = [] def get_key_node(dict_data, obj_key): v = dict_data.get(obj_key) if v is not None: result.append(v) for value in dict_data.values(): if isinstance(value, dict): get_key_node(value, obj_key) print(result)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python