Python递归查找嵌套字典指定key并返回对应键值对的实现问题
解决方案
修改说明
- 仅需修改
item_generator函数中匹配到目标key后的yield语句,将原来返回value的逻辑,替换为你提前构造好的{key:value}字典即可,原有递归遍历字典、列表的逻辑完全不需要调整,不会破坏原有功能 - 调整后
get_data_value接收到的生成器返回值就会是符合要求的单个字典
完整修改后代码
def get_data_value(data,data_name): d = data['test'] print(item_generator(d,data_name)) for _ in item_generator(d,data_name): return (_) def item_generator(json_input, lookup_key): if isinstance(json_input, dict): for key, value in json_input.items(): if key == lookup_key: data_single_item = {key:value} # what i want to return print(data_single_item) yield data_single_item # 替换原有的yield value else: yield from item_generator(value, lookup_key) elif isinstance(json_input, list): for item in json_input: yield from item_generator(item, lookup_key) json_data = { "test": [ { "Tier1": [ { "Tier1-Main-Title-1": [ { "title": "main", "example": 400 } ] } ] }, { "Tier2": [] }, { "Tier3": [ { "Example1-Sub1": 44 } ] } ] } print(get_data_value(json_data,'title'))
运行输出
{'title': 'main'}
内容的提问来源于stack exchange,提问作者John Anthony
相关产品推荐
相关产品推荐

