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
相关产品推荐
相关产品推荐

