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

题目描述
从data大字典中找出特定键GlossTerm的value值
题目来源及自己的思路
题目来自面试笔试题我的思路是先将json格式data序列化得到字典格式data然后递归遍历找到目标键后退出递归并返回它的值
importjson
data=json.loads(data)
defget_key_node(dict_data,obj_key):
forkey,valueindict_data.items():
ifvalue:
ifnotisinstance(value,dict):
ifkey==obj_key:
print(value)
returnvalue
else:
get_key_node(value,obj_key)
print(get_key_node(data,"GlossTerm"))
相关代码
data='''{
"glossary":{
"title":"exampleglossary",
"GlossDiv":{
"title":"S",
"GlossList":{
"GlossEntry":{
"ID":"SGML",
"SortAs":"SGML",
"GlossTerm":"StandardGeneralizedMarkupLanguage",
"Acronym":"SGML",
"Abbrev":"ISO8879:1986",
"GlossDef":{
"para":"Ameta-markuplanguage,usedtocreatemarkuplanguagessuchasDocBook.",
"GlossSeeAlso":["GML","XML"]
},
"GlossSee":"markup"
}
}
}
}
}'''importjsondata=json.loads(data)
defget_key_node(dict_data,obj_key):
forkey,valueindict_data.items():
ifvalue:
ifnotisinstance(value,dict):
ifkey==obj_key:
print(value)
returnvalue
else:
get_key_node(value,obj_key)
print(get_key_node(data,"GlossTerm"))
你期待的结果是什么?实际看到的错误信息又是什么?
期待的结果是
'StandardGeneralizedMarkupLanguage
可我的方法结果是
None
qq_遁去的一_1
浏览 749回答 2
2回答

饮歌长啸

我记得回答过你类似的问题?基于你的代码改的defget_dictkeys(dic,find_key):find_value='no'forkey,valueindic.items():ifkey==find_key:find_value=valueelifisinstance(value,dict):find_value=get_dictkeys(value,find_key)iffind_value=='no':return'dictdoesnthavethiskey'else:returnfind_valueprintget_dictkeys(data,"GlossTerm")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript