已知值时从json文件中提取密钥(groovy或python)

已知值时从json文件中提取密钥(groovy或python),python,json,groovy,jsonslurper,Python,Json,Groovy,Jsonslurper,如果我只知道值,有没有办法从JSON中提取密钥?在groovy或python中 例如: 我知道_数值,我需要一把钥匙。 比如说,已知的_数是2,作为输出,我应该得到dsf34f43f34f { "id": "8e37ecadf4908f79d58080e6ddbc", "project": "some_project", "branch": "master", "current_revision": "3rtgfgdfg2fdsf", "revisions": { "

如果我只知道值,有没有办法从JSON中提取密钥?在groovy或python中 例如: 我知道_数值,我需要一把钥匙。 比如说,已知的_数是2,作为输出,我应该得到dsf34f43f34f

{
  "id": "8e37ecadf4908f79d58080e6ddbc",
  "project": "some_project",
  "branch": "master",
  "current_revision": "3rtgfgdfg2fdsf",
  "revisions": {
    "43g5g534534rf34f43f": {
      "_number": 3,
      "created": "2019-04-16 09:03:07.459000000",
      "uploader": {
        "_account_id": 4
      },
      "description": "Rebase"
    },
    "dsf34f43f34f34f": {
      "_number": 2,
      "created": "2019-04-02 10:54:14.682000000",
      "uploader": {
        "_account_id": 2
      },
      "description": "Rebase"
    }
  }
}

Python 3:假设数据保存在data.json中:

使用dict CONTRUSION打印_number等于2的所有转速。

输出:

使用Groovy:

def json = new groovy.json.JsonSlurper().parse("x.json" as File)
println(json.revisions.findResult{ it.value._number==2 ? it.key : null })
// => dsf34f43f34f34f

如果有另一个值为2的_数呢?那是一个集合理解,而不是dict理解;
print({k for k,v in d['revisions'].items() if v.get('_number') == 2})
{'dsf34f43f34f34f'}
def json = new groovy.json.JsonSlurper().parse("x.json" as File)
println(json.revisions.findResult{ it.value._number==2 ? it.key : null })
// => dsf34f43f34f34f