在 Python 中导航嵌套 JSON 的最佳方式?

2024-03-08

我尝试了不同的 for 循环尝试迭代这个 JSON,但我不知道如何做到这一点。我有一个数字列表,想要将其与每个“数据”对象下的“键”值(例如,Aatrox、Ahri、Akali 等)进行比较,如果数字匹配,则存储“名称” 另一个列表中的值。

例子: 数字列表 = [266, 166, 123, 283]

266 和 166 将分别匹配 Aatrox 和 Akshan 对象中的“密钥”,因此我想提取该名称并将其存储在列表中。

我知道这个 JSON 主要是通过键值访问而不是被索引,所以我不确定如何迭代 for 循环中的所有“数据”对象。

JSON 我参考:

{
  "type": "champion",
  "format": "standAloneComplex",
  "version": "12.2.1",
  "data": {
    "Aatrox": {
      "version": "12.2.1",
      "id": "Aatrox",
      "key": "266",
      "name": "Aatrox",
      "title": "the Darkin Blade",
      "blurb": "Once honored defenders of Shurima against the Void, Aatrox and his brethren would eventually become an even greater threat to Runeterra, and were defeated only by cunning mortal sorcery. But after centuries of imprisonment, Aatrox was the first to find...",
      "info": {
        "attack": 8,
        "defense": 4,
        "magic": 3,
        "difficulty": 4
      },
      "image": {
        "full": "Aatrox.png",
        "sprite": "champion0.png",
        "group": "champion",
        "x": 0,
        "y": 0,
        "w": 48,
        "h": 48
      },
      "tags": [
        "Fighter",
        "Tank"
      ],
      "partype": "Blood Well",
      "stats": {
        "hp": 580,
        "hpperlevel": 90,
        "mp": 0,
        "mpperlevel": 0,
        "movespeed": 345,
        "armor": 38,
        "armorperlevel": 3.25,
        "spellblock": 32,
        "spellblockperlevel": 1.25,
        "attackrange": 175,
        "hpregen": 3,
        "hpregenperlevel": 1,
        "mpregen": 0,
        "mpregenperlevel": 0,
        "crit": 0,
        "critperlevel": 0,
        "attackdamage": 60,
        "attackdamageperlevel": 5,
        "attackspeedperlevel": 2.5,
        "attackspeed": 0.651
      }
    },
    "Ahri": {
      "version": "12.2.1",
      "id": "Ahri",
      "key": "103",
      "name": "Ahri",
      "title": "the Nine-Tailed Fox",
      "blurb": "Innately connected to the latent power of Runeterra, Ahri is a vastaya who can reshape magic into orbs of raw energy. She revels in toying with her prey by manipulating their emotions before devouring their life essence. Despite her predatory nature...",
      "info": {
        "attack": 3,
        "defense": 4,
        "magic": 8,
        "difficulty": 5
      },
      "image": {
        "full": "Ahri.png",
        "sprite": "champion0.png",
        "group": "champion",
        "x": 48,
        "y": 0,
        "w": 48,
        "h": 48
      },
      "tags": [
        "Mage",
        "Assassin"
      ],
      "partype": "Mana",
      "stats": {
        "hp": 526,
        "hpperlevel": 92,
        "mp": 418,
        "mpperlevel": 25,
        "movespeed": 330,
        "armor": 21,
        "armorperlevel": 3.5,
        "spellblock": 30,
        "spellblockperlevel": 0.5,
        "attackrange": 550,
        "hpregen": 5.5,
        "hpregenperlevel": 0.6,
        "mpregen": 8,
        "mpregenperlevel": 0.8,
        "crit": 0,
        "critperlevel": 0,
        "attackdamage": 53,
        "attackdamageperlevel": 3,
        "attackspeedperlevel": 2,
        "attackspeed": 0.668
      }
    },
    "Akali": {
      "version": "12.2.1",
      "id": "Akali",
      "key": "84",
      "name": "Akali",
      "title": "the Rogue Assassin",
      "blurb": "Abandoning the Kinkou Order and her title of the Fist of Shadow, Akali now strikes alone, ready to be the deadly weapon her people need. Though she holds onto all she learned from her master Shen, she has pledged to defend Ionia from its enemies, one...",
      "info": {
        "attack": 5,
        "defense": 3,
        "magic": 8,
        "difficulty": 7
      },
      "image": {
        "full": "Akali.png",
        "sprite": "champion0.png",
        "group": "champion",
        "x": 96,
        "y": 0,
        "w": 48,
        "h": 48
      },
      "tags": [
        "Assassin"
      ],
      "partype": "Energy",
      "stats": {
        "hp": 500,
        "hpperlevel": 105,
        "mp": 200,
        "mpperlevel": 0,
        "movespeed": 345,
        "armor": 23,
        "armorperlevel": 3.5,
        "spellblock": 37,
        "spellblockperlevel": 1.25,
        "attackrange": 125,
        "hpregen": 9,
        "hpregenperlevel": 0.9,
        "mpregen": 50,
        "mpregenperlevel": 0,
        "crit": 0,
        "critperlevel": 0,
        "attackdamage": 62,
        "attackdamageperlevel": 3.3,
        "attackspeedperlevel": 3.2,
        "attackspeed": 0.625
      }
    },
    "Akshan": {
      "version": "12.2.1",
      "id": "Akshan",
      "key": "166",
      "name": "Akshan",
      "title": "the Rogue Sentinel",
      "blurb": "Raising an eyebrow in the face of danger, Akshan fights evil with dashing charisma, righteous vengeance, and a conspicuous lack of shirts. He is highly skilled in the art of stealth combat, able to evade the eyes of his enemies and reappear when they...",
      "info": {
        "attack": 0,
        "defense": 0,
        "magic": 0,
        "difficulty": 0
      },
      "image": {
        "full": "Akshan.png",
        "sprite": "champion0.png",
        "group": "champion",
        "x": 144,
        "y": 0,
        "w": 48,
        "h": 48
      },
      "tags": [
        "Marksman",
        "Assassin"
      ],
      "partype": "Mana",
      "stats": {
        "hp": 560,
        "hpperlevel": 90,
        "mp": 350,
        "mpperlevel": 40,
        "movespeed": 330,
        "armor": 26,
        "armorperlevel": 3,
        "spellblock": 30,
        "spellblockperlevel": 0.5,
        "attackrange": 500,
        "hpregen": 3.75,
        "hpregenperlevel": 0.65,
        "mpregen": 8.175,
        "mpregenperlevel": 0.7,
        "crit": 0,
        "critperlevel": 0,
        "attackdamage": 52,
        "attackdamageperlevel": 3.5,
        "attackspeedperlevel": 4,
        "attackspeed": 0.638
      }
    }
  }
}

有很多解决方案 你也可以试试这个 我认为它非常适合您的解决方案

import json

#Load your json or manually declare your json here 
with open('yourfile.json') as f:
  Data= json.load(f) 

#This the main code for accesing the value and get the result 
Temp_Data=Data['data']
result_list=[]
listOfNumbers =[266,166,123,283]
for data,data_info in Temp_Data.items():
    key_value=int(Temp_Data[data]['key'])
    if key_value in listOfNumbers:
        result_list.append(data)
print(result_list)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python 中导航嵌套 JSON 的最佳方式? 的相关文章

  • 如何测试使用 XCom 的 Apache Airflow 任务

    我正在尝试找出一种测试 DAG 的方法 其中有几个任务使用 XCom 进行通信 由于控制台命令只允许我从 DAG 运行任务 有没有一种方法可以测试通信而无需通过 UI 运行 DAG Thanks 这是一种对我有用的方法 尽管 Airflow
  • 如何为 Intellij/PyCharm 设置 PYTHONSTARTUP 脚本

    我尝试添加PYTHONSTARTUP环境变量 我还尝试了自定义启动脚本 但更令人惊讶的是 这also没有工作 npa别名无法识别 出于一点绝望 我什至尝试添加到interpreter options 那什么也没做 实际上是什么Interpr
  • Python grpc protobuf 存根生成问题:--grpc_out: protoc-gen-grpc: 插件失败,状态代码 1

    正如问题所说 我从源代码编译了 grpc 并且也做了sudo pip install grpcio 但是 那which grpc python plugin不返回任何内容 这是一个问题 因为route guide的grpc python示例
  • 我应该为 MySQL 使用什么 python 3 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 据我所知 MySQLdb 仍然没有移植到 Python 3 pypy 上似乎有另一个名为 PyMySQL
  • Spyder 导入模块出错

    我正在尝试在 Spyder 中使用 sklearn 一开始 当我尝试导入它时 我收到 ImportError No module named sklearn 然后我用 PYTHONPATH 管理器设置 PATH 然后使用工具菜单中的 更新模
  • JSON 语法:传输数组

    A validJSON 语法是这样的 username admin password 123 但是如果我想传输一组 用户 给出的例子 而不是单个 用户 根据规范 下面的代码是有效的 JSON 吗 username admin passwor
  • 如何为 C 分配的 numpy 数组注册析构函数?

    我想在 C C 中为 numpy 数组分配数字 并将它们作为 numpy 数组传递给 python 我可以做的PyArray SimpleNewFromData http docs scipy org doc numpy reference
  • 如何在Python中求和

    我想知道如何在 python 中表示总和而不需要像这样的循环here http docs scipy org doc scipy reference tutorial optimize html 我们有 def rosen x The Ro
  • 使用 3d 对象作为 3d 散点图中的标记 - Python

    使用下面的代码 我尝试模拟一个用罐头制成的碗 我希望每个标记都是一个罐头 最好的方法是什么 我真的很感激任何建议 谢谢 import pylab import numpy as np from math import pi sin cos
  • python:是否有用于对输入流进行分块的库函数?

    我想对输入流进行分块以进行批处理 给定一个输入列表或生成器 x in 1 2 3 4 5 6 我想要一个能够返回该输入块的函数 说 如果chunk size 4 then x chunked 1 2 3 4 5 6 这是我一遍又一遍地做的事
  • 将压缩的json数据存储在本地存储中

    我想将 JSON 数据存储在本地存储中 有时存储的数据可能超过 5MB 每个域的浏览器允许的最大阈值 无论如何 我可以压缩或压缩数据并将其存储在本地存储中吗 如果对大数据进行每个 JS 函数的压缩和解压 会增加多少延迟 我正在使用这个 js
  • 在python中安装scipy模块时出错

    我正在尝试使用 pip 在 python 中安装 scipy 模块 它显示以下错误 Command c users sony appdata local programs python python35 32 python exe u c
  • 使用 statsmodels.formula.api 中的 ols - 如何删除常数项?

    我正在遵循第一个例子statsmodels教程 http statsmodels sourceforge net devel http statsmodels sourceforge net devel 如何指定在 ols 中不使用常数项进
  • Python 队列 get()/task_done() 问题

    我的消费者端队列 m queue get queue task done
  • 如何可视化多维数据上的 kmeans 聚类

    我在 mnist 数据集上使用 kmeans 聚类算法 并希望可视化聚类后的图 到目前为止我做了这个 from mnist import MNIST mndata MNIST Datasets X train y train mndata
  • 如何限制scrapy请求对象?

    所以我有一个蜘蛛 我认为它正在泄漏内存 结果当我检查 telnet 控制台 gt gt gt prefs 时 它只是从链接丰富的页面中抓取了太多链接 有时它会超过 100 000 个 现在我已经一遍又一遍地浏览文档和谷歌 但我找不到一种方法
  • Scrapy 抓取并跟踪 href 中的链接

    我对 scrapy 很陌生 我需要从 url 的主页跟踪 href 到多个深度 再次在 href 链接内我有多个 href 我需要遵循这些href 直到到达我想要抓取的页面 我的页面的示例 html 是 初始页 div class page
  • Flask 扩展未在 app.extensions 中注册

    我想访问在我的 Flask 应用程序上注册的一些扩展 我尝试使用app extensions 但我初始化的一些扩展不在字典中 from flask import current app current app extensions get
  • 在至少 7 天内连续三天登录该产品的用户

    我有一个用于用户参与的数据框 df 如下所示 time stamp user id 2013 01 01 10 05 23 1 2013 01 03 16 35 23 1 2013 01 06 11 06 35 1 2013 01 10 1
  • django admin 中内联模型的分页器

    我有这个简单的 django 模型 由一个传感器和特定传感器的值组成 每个日射强度计的值数量很多 gt 30k 是否可以以某种方式分页PyranometerValues在特定日期或一般情况下将分页器应用于管理内联视图 class Pyran

随机推荐

  • Python datetime 和 tzinfo 对象(更改分钟而不是小时)

    我正在尝试将 tzinfo 应用于日期时间对象 In 1 from datetime import datetime In 2 import pytz In 3 london pytz timezone Europe London In 4
  • Microsoft SQL Server 与 SQL Server Management Studio

    Microsoft SQL Server 和 SQL Server Management Studio SSMS 之间有什么区别 如何将 SSMS 集成到 Visual Studio 2012 中以便使用数据库图表 归功于 marc s S
  • 与 ToList() 相比,ToListAsync() 非常慢

    我有一个带有分组和多个包含的复杂 LINQ 查询 我发现 ToListAsync 需要超过一秒才能完成 而 ToList 只需几分之一秒即可返回 allReservationsList allReservations ToList fast
  • Linux 上的 Boost Asio 不使用 Epoll

    我的印象是 boost asio 默认情况下会使用 epoll 设置而不是 select 实现 但在运行一些测试后 看起来我的设置正在使用 select 操作系统 RHEL 4内核 2 6海湾合作委员会 3 4 6 我编写了一个小测试程序来
  • 为什么我不能对同一个迭代器进行两次迭代?如何“重置”迭代器或重用数据?

    考虑代码 def test data for row in data print first loop for row in data print second loop When data is an iterator https doc
  • libvlc - 如何在播放过程中改变音量

    我试图在播放音频文件时设置音量 但它似乎根本不起作用 请问我做错了什么 create a vlc playable object from source self playable vlc libvlc media new path sel
  • 如何停止/关闭elasticsearch节点?

    我想使用新配置重新启动Elasticsearch节点 正常关闭节点的最佳方法是什么 终止进程是关闭服务器的最佳方法 还是可以使用一些神奇的 URL 来关闭节点 更新了答案 shutdownAPI 已在 elasticsearch 2 x 中
  • html5 数据属性上的 Angular 2 模板解析错误[重复]

    这个问题在这里已经有答案了 我正在开发的 Angular 2 应用程序是用于呼叫中心的 我创建了一个 Angular 2 组件 它是一个引导模式 当我在页面上实例化一个或多个并创建触发器来打开它们时 它可以完美地工作 那里没有问题 我已经彻
  • Kotlin和Unity开发错误

    我使用Android Studio和Unity开发 将Library打包成aar文件 然后将aar文件作为Unity插件 当我使用Java时 没有问题 但是当使用Kotlin时 就会抛出异常 谢谢 例外 AndroidJavaExcepti
  • Class#allocate 及其用途

    读完后http www seejohncode com 2012 03 16 ruby class allocate http www seejohncode com 2012 03 16 ruby class allocate 并进一步研
  • 在 android 中使用 HTML5 日期输入元素

    元素
  • PyMongo 游标迭代

    我正在寻找在 python 中创建和处理游标的方式 就像游标在 mongo 中本地工作的方式一样 我知道预期的方法是执行 result collection find 并执行 结果记录 但我希望将迭代功能包装在一个类中 我希望能够创建一个新
  • 推送到 bitbucket 存储库时出现“致命:身份验证失败”错误

    我正在尝试在 Windows 7 终端中进行身份验证 git Push 以前工作过 但现在我得到 致命 身份验证失败https bitbucket srv https bitbucket srv 但是我可以通过浏览器登录到同一个存储库 这是
  • VM cloudera - 用户cloudera和权限?

    我下载并安装了 VM Cloudera 4 4 来使用 Hadoop 我已经在我的工作平台上建立了一个集群 所以我知道一点 hadoop 是如何工作的 所以我认为我的问题来自于我对linux以及他的用户和群体的误解 使用蜂巢 我尝试使用 s
  • 如何使用业务对象绑定rdlc报告?

    我有一个名为的业务对象 TeamMaster 其中我定义了三个属性 Id Name 和 Flg 在我的 rdlc 报告中我申请TeamMaster对象作为数据源 现在 我在表单的页面加载事件中编写以下代码 在其中添加报表查看器控件并将报表定
  • jQuery 拖放 - 只允许列表中的一项

    我使用这个例子jQuery UI 可排序 http jqueryui com demos sortable empty lists 我在拖放方面遇到问题 表号 3 sortable3应该只能收到一件物品 这是我的 HTML div clas
  • 使用 CNAME 时是否可以创建正确的 SPF 和 DMARC DNS 记录?

    在我的设置中 我有一个托管在 Heroku 上的网站 example app 然后 我使用 Sendgrid 从 Heroku 服务器向忘记密码的用户发送电子邮件 该电子邮件是使用 Google 的 Gsuite 注册的 所以我也从 Goo
  • 如何初始化常量 CLSID

    类 ID GUID 通常使用由破折号分隔的十六进制数字序列来指定 例如 557cf406 1a04 11d3 9a73 0000f81ef32e 这不是可用于直接初始化 CLSID 结构的文字 我发现了两种初始化结构的方法 但它们都有点尴尬
  • 如何使用collectionview流布局来获得正确的视图?

    我正在使用此代码来获得正确的类型 但没有获得我想要的视图 任何人都可以告诉我我哪里错了 override func viewDidAppear animated Bool super viewDidAppear animated scree
  • 在 Python 中导航嵌套 JSON 的最佳方式?

    我尝试了不同的 for 循环尝试迭代这个 JSON 但我不知道如何做到这一点 我有一个数字列表 想要将其与每个 数据 对象下的 键 值 例如 Aatrox Ahri Akali 等 进行比较 如果数字匹配 则存储 名称 另一个列表中的值 例