首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遍历JSON文件中的嵌套字典

遍历JSON文件中的嵌套字典
EN

Stack Overflow用户
提问于 2021-11-17 12:20:30
回答 1查看 37关注 0票数 0

我有以下来自json文件的输出

代码语言:javascript
复制
    {
  "Threshold": 0.6,
  "Services": [
    {
      "Name": "Service1",
      "Query": [
        "query1",
        "query2",
        "query3"
      ],
      "Products": [
        {
          "Name": "product1",
          "Query": [
            "query4",
            "query5"
          ],
          "Threshold": 0.75
        },
        {
          "Name": "product2",
          "Query": [
            "query6",
            "query7",
            "query8"
          ],
          "Threshold": 0.75
        },
        {
          "Name": "product3",
          "Query": [
            "query9",
            "query10"
          ],
          "Threshold": 0.75
        },
        {
          "Name": "product4",
          "Query": [
            "query11",
            "query12"
          ],
          "Threshold": 0.75
        },
        {
          "Name": "product5",
          "Query": [
            "query13",
            "query14"
          ],
          "Threshold": 0.75
        }
      ]
    },
    {
      "Name": "Service2",
      "Query": [
        "query1",
        "query2",
        "query3"
      ],
      "Products": [
        {
          "Name": "product1",
          "Query": [
            "query4",
            "query5"
          ],
          "Threshold": 0.75
        },
        {
          "Name": "product2",
          "Query": [
            "query6",
            "query7",
            "query8"
          ],
          "Threshold": 0.75
        },
        {
          "Name": "product3",
          "Query": [
            "query9",
            "query10"
          ],
          "Threshold": 0.75
        },
        {
          "Name": "product4",
          "Query": [
            "query11",
            "query12"
          ],
          "Threshold": 0.75
        },
        {
          "Name": "product5",
          "Query": [
            "query13",
            "query14"
          ],
          "Threshold": 0.75
        }
      ]
    }
  ]
}

该文件的结构如下:有两个服务,每个服务都有五个类似的产品。每个服务都有一个查询列表,其中包含一些描述该服务的关键字。

同样的道理也适用于产品。

每个产品都作为包含描述单个产品的关键字的查询列表。

我想循环进入服务并选择service1。然后,我想对文本运行算法中的查询,以确定文本中是否存在一个或所有查询。如果存在一个或多个查询,我想进入产品并开始遍历product1到product5。如果不是,它应该跳过并转到service2

我想对service2和各自的产品做同样的事情。

我只能在运行以下代码时运行它:

代码语言:javascript
复制
for service in configfile["Services"]:
        if service["Name"] == "Service1":

代码必须在不对"Service1“或"Service2”名称进行硬编码的情况下运行。

本质上,我想获取service1和service2并访问查询。我将从Sentence transformers运行代码。

代码语言:javascript
复制
# Query sentences:
queries = ['query1', 'query2', 'query3']



top_k = min(5, len(corpus))
for query in queries:
    query_embedding = embedder.encode(query, convert_to_tensor=True)

   # We use cosine-similarity and torch.topk to find the highest 5 scores
    cos_scores = util.pytorch_cos_sim(query_embedding, corpus_embeddings)[0]
    top_results = torch.topk(cos_scores, k=top_k)

    print("\n\n======================\n\n")
    print("Query:", query)
    print("\nTop 5 most similar sentences in corpus:")

    for score, idx in zip(top_results[0], top_results[1]):
         print(corpus[idx], "(Score: {:.4f})".format(score))

对于每个查询,我都会从这个算法中得到一些分数。然后,我对查询进行排序,并采用具有最大值的查询。如果此值高于阈值,我希望继续使用services1中从product1到product5的查询中的相同算法。取最大值,如果该值高于某个阈值,我会将其作为“正”添加到字典中。如果没有,我会将其添加为“负面”。

如果值低于阈值,我想跳过对产品的迭代,转到Service2,为查询再次运行算法,并重复该过程。

EN

回答 1

Stack Overflow用户

发布于 2021-11-17 13:44:13

不清楚您想要对您的产品做什么,但是由于ServicesProducts是列表,您可以简单地遍历它们:

代码语言:javascript
复制
for serv in json_data.get("Services", []):
    if serv.get("Query", None):
        for prod in serv.get("Products", []):
            # do your stuff with prod
            print(serv.get("Name", None), prod.get("Name", None))

输出:

代码语言:javascript
复制
Service1 product1
Service1 product2
Service1 product3
Service1 product4
Service1 product5
Service2 product1
Service2 product2
Service2 product3
Service2 product4
Service2 product5
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70004321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档