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

使用JMESPath过滤时如何同时获取键和值而非仅返回值?

在Python中用JMESPath同时获取匹配的键和值

你当前的JMESPath表达式仅提取了匹配的字典值,若要同时保留对应的键,需要先将原字典转换为键值对数组,过滤后再重组为目标字典结构。

输入数据

s = {'111': {'name': 'john', 'exp': '1'}, '222': {'name': 'mia', 'exp': '1'}}

修改后的代码

import jmespath

# 转换为键值对数组后过滤,再重组字典
result = jmespath.search("entries(@)[?value.name=='john'].{[0]: [1]}", s)
print(result)

输出结果

[{'111': {'name': 'john', 'exp': '1'}}]

表达式拆解

  • entries(@):把原字典转为[[键, 值]]格式的数组,示例中得到[['111', {'name': 'john', 'exp': '1'}], ['222', {'name': 'mia', 'exp': '1'}]]
  • [?value.name=='john']:过滤出value字段中name等于john的键值对
  • .{[0]: [1]}:将过滤后的键值对(数组第0位是键,第1位是值)重新组合为字典

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:45:41