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

Python如何在同父级嵌套字典中通过目标值反查对应字段取值

实现方案

你只需要遍历r['data']下的每一条记录,在单条记录中匹配到目标值后,直接读取同记录下字段"3"的value即可,不需要跨记录查找。

可直接复用的代码

单匹配版本(返回第一条命中的结果)

适用于目标值全局唯一的场景,匹配到第一个结果就直接返回,执行效率更高:

def query_value_by_target(target_val, api_resp):
    for record in api_resp.get("data", []):
        # 遍历当前记录的所有字段值
        for field in record.values():
            if field.get("value") == target_val:
                return record.get("3", {}).get("value")
    # 无匹配结果返回None
    return None

多匹配版本(返回所有命中的结果)

如果可能存在多条记录都包含目标值,用这个版本返回所有符合条件的字段3取值:

def query_all_values_by_target(target_val, api_resp):
    match_results = []
    for record in api_resp.get("data", []):
        for field in record.values():
            if field.get("value") == target_val:
                match_results.append(record.get("3", {}).get("value"))
                # 单条记录命中一次就跳出,避免同记录重复字段导致重复取值
                break
    return match_results

调用示例

用你给出的样例数据做测试:

# 模拟API返回的响应
r = {
    "data": [
        {
            "3": {"value": 1},
            "6": {"value": "Conversion"},
            "7": {"value": "HVAC"}
        }
    ]
}

# 查找Conversion对应的字段3值
print(query_value_by_target("Conversion", r))
# 输出:1

说明

  • 代码中统一使用.get()方法取值,是为了避免字段缺失时触发KeyError,如果你的数据结构完全固定、不会出现缺字段的情况,也可以直接用键索引的方式取值,比如record['3']['value']。
  • 如果需要固定匹配某个特定字段(比如你已知目标值只会出现在字段"6"里,不用遍历所有字段),可以把内层遍历逻辑直接改成判断record.get("6", {}).get("value") == target_val,执行速度会更快。

内容的提问来源于stack exchange,提问作者Nathan Allan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:42:16