JMESPath:在dict中将数组值与标量值组合以获得交叉产品的列表

时间:2018-04-24 21:24:16

标签: python jmespath

有没有办法在JMESPath中实现以下行为?

我有这样的字典:

{
    "foo": "aa", 
    "bars": [
        "bb", 
        "cc"
    ]
}

我正在寻找如下结果。标量值" aa"应该与" bar"的所有项目结合使用。数组得到一个平坦的dicts数组。 (从" bar"到" bar"的变化会很好但不是必须的,我主要寻找元素的组合。)

[
    {
        "foo": "aa",
        "bar": "bb"
    },
    {
        "foo": "aa",
        "bar": "cc"
    }
]

如果有人知道实现这一目标的方法会很棒。

1 个答案:

答案 0 :(得分:0)

目前不可能,并且需要能够访问表达式中的父对象。已在github issue #22上请求该功能。

现在您可以创建一个包含foo的对象列表:

map(&{bar: @}, bars)

返回

[
  {
    "bar": "bb"
  },
  {
    "bar": "cc"
  }
]

当然,你可以添加foo这样的静态值:

map(&{foo: "aa", bar: @}, bars)

但是,假设父对象功能将实现为变量$,正如this github注释中所建议的那样,您将获得所需的结果表达

map(&{foo: $, bar: @}, bars)

请注意,尚未使用