gpt4 book ai didi

python - 搜索 JSON,返回 JSON 结构中的字符串

转载 作者:太空宇宙 更新时间:2023-11-03 16:08:44 27 4
gpt4 key购买 nike

我有一组看起来与此类似的 JSON 数据:

{"executions": [
{
"id": 17,
"orderId": 16,
"executionStatus": "1",
"cycleId": 5,
"projectId": 15006,
"issueId": 133038,
"issueKey": "QTCMP-8",
"label": "",
"component": "",
"projectKey": "QTCMP",
"executionDefectCount": 0,
"stepDefectCount": 0,
"totalDefectCount": 0
},
{
"id": 14,
"orderId": 14,
"executionStatus": "1",
"cycleId": 5,
"projectId": 15006,
"issueId": 133042,
"issueKey": "QTCMP-10",
"label": "",
"component": "",
"projectKey": "QTCMP",
"executionDefectCount": 0,
"stepDefectCount": 0,
"totalDefectCount": 0
}
],
"currentlySelectedExecutionId": "",
"recordsCount": 4
}

我已经用 Python 对其进行了解析,如下所示:

import json
import pprint

with open('file.json') as dataFile:
data = json.load(dataFile)

有了这个,我可以通过执行 data["executions"] 等来找到诸如执行之类的数据集。我需要做的是在结构中搜索字符串“QTCMP-8”,然后当我找到该特定字符串时,找到与该字符串关联的“id”。所以对于 QTCMP-8 来说,id 是 17;对于 QTCMP-10,则为 14。

这可能吗?我需要先转换数据吗?非常感谢任何帮助!

最佳答案

你不能以 O(1) 的计算顺序来做到这一点,至少现在是这样。以下是每次搜索复杂度为 O(n) 的解决方案。

id = None
for dic in executions:
if dic['issueKey'] == query:
id = dic['id']
break

在 O(1) 中执行此操作,需要 O(n) 的预处理,其中您可以按 issueKey 对执行进行分类,并在其中保存您想要的任何信息。

# Preprocessing of O(n)
mapping = dict()
for dic in executions:
mapping[dic['issueKey']] = {
'id': dic['id'],
'whatever': 'whateverel'
}

# Now you can query in O(1)

return dic[query]['id']

您可能还想考虑与 MongoDB 合作或者喜欢它,如果你正在进行大量的 json 查询。

关于python - 搜索 JSON,返回 JSON 结构中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39490838/

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