You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:54:03