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

如何使用Python JMESPath在嵌套字典匹配条件后返回指定内部值

JMESPath 条件匹配后返回目标值的正确写法

问题描述

给定数据:

data_case_c = {
    "qualities": {
        "id": "0123456789",
        "key_criteria": "Target",
        "desired_value": {"id": "987654321", "label": "CORRECT"},
    }
}

需求:检查qualities.key_criteria是否等于Target,满足条件时返回qualities.desired_value.label的值(即CORRECT)。

尝试的查询语句返回None:

query = "qualities.key_criteria == 'Target' | qualities.desired_value.label"

单独执行条件判断qualities.key_criteria == 'Target'会返回True,但管道后无法得到目标值。

原因分析

JMESPath的管道操作符|是将前一个表达式的输出作为后一个表达式的输入。前半部分返回的是布尔值True,后半部分qualities.desired_value.label在布尔值的上下文中找不到对应属性,因此返回None。

正确解法

方法1:使用三元条件表达式

直接通过条件 ? 真值表达式 : 假值表达式的语法实现,逻辑更直观:

qualities.key_criteria == 'Target' ? qualities.desired_value.label : null

当条件满足时返回CORRECT,不满足时返回null。

方法2:使用过滤投影+取值

将qualities视为单元素数组进行过滤,再提取目标值:

qualities[?key_criteria == 'Target'].desired_value.label | [0]
  • qualities[?key_criteria == 'Target']过滤出符合条件的对象
  • .desired_value.label提取目标字段,此时结果是数组["CORRECT"]
  • | [0]取出数组中的第一个元素,得到字符串CORRECT

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:22:46