gpt4 book ai didi

normalization - jmespath : getting keys with property filter

转载 作者:行者123 更新时间:2023-12-05 07:24:55 25 4
gpt4 key购买 nike

我有以下 json :

{
"dataset_1": {
"size_in_mb": 0.5,
"task": "clean",
"tags": ["apple", "banana", "strawberry"]
},
"dataset_2": {
"size_in_mb": 100,
"task": "split",
"tags": ["apple"]
},
"dataset_3": {
"size_in_mb": 1024,
"task": "clean",
"tags": ["strawberry"]
}
}

我该怎么做:

  1. 获取带有“apple”标签的数据集
  2. 获取大于500mb的数据集
  3. 获取任务为“split”的数据集

我能够查询数据集的属性,但无法提取具有特定属性的数据集的名称。例如,当“tags”包含“strawberry”时,我可以得到 [“strawberry”],但不能得到 [“dataset_1”、“dataset_3”]。

This问题很接近,但基本上说你不能使用 jmespath。

最佳答案

你想通了这一点

  • 正如您在评论中所述,如果您想这样做,重新规范化原始数据集以使用顺序枚举排序规则(而不是顶级排序规则的对象键)通常是最好的方法使用 jmespath 的通用查询。

  • 您链接到的 Stackoverflow 帖子对此问题进行了更详细的介绍 here

重新规范化数据集前后

  • 为了那些可能想要更详细地了解您所说的意思的人的利益,我最终稍微更改了架构 ...这是一个“之前和之后”的例子可以看起来像

之前

  {
"dataset_1": {
"size_in_mb": 0.5,
"task": "clean",
"tags": ["apple", "banana", "strawberry"]
},
"dataset_2": {
"size_in_mb": 100,
"task": "split",
"tags": ["apple"]
},
"dataset_3": {
"size_in_mb": 1024,
"task": "clean",
"tags": ["strawberry"]
}
}

之后

  {"dataroot":[
{
"name": "dataset_1",
"size_in_mb": 0.5,
"task": "clean",
"tags": ["apple", "banana", "strawberry"]
},
{
"name": "dataset_2",
"size_in_mb": 100,
"task": "split",
"tags": ["apple", "banana", "strawberry"]
},
{
"name": "dataset_3",
"size_in_mb": 1024,
"task": "clean",
"tags": ["strawberry"]
}
]}

关于normalization - jmespath : getting keys with property filter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55171613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com