python - 数据龙物品,keyError
问题描述
所以我遇到了一个问题,我无法访问他们在 riot json 文件中的密钥。 http://ddragon.leagueoflegends.com/cdn/11.16.1/data/en_US/item.json这是官方的防暴链接,你可以在他们的防暴 api 网站上的项目下找到。
如果你写这个:
for key, value in items['data'].items():
print(value)
它会返回所有值如果你这样写:
for key value in items['data'].items():
print(value['name'])
它会返回名称,除了“深度键”之外,它与所有其他值 [键] 一样。我使用了双循环,它最终返回了所有的深度值:
for key,value in items['data'].items():
for k,v in value.items():
if k == 'depth':
print(v)
但这并不能拯救我,因为我想写一些类似的东西,如果“深度”== 3,我想将项目“名称”附加到列表中。我想,也许这是一个错误,因为这个文件中的第一个项目没有“深度”键,所以我写了一个异常,但它没有用。
解决方案
只需使用get()
方法来获取特定键的值。然后您可以将其与所需值进行比较。对于您的情况,带有简单检查的列表理解可以完成这项工作:
names_list = [v.get('name') for v in items['data'].values() if v.get('depth') == 3]
推荐阅读
- c# - Telerik RadSyntaxEditor 不加载或突出显示文本
- powershell - 如何通过 Powershell 从多个 Web 服务器并行下载 Web 字符串?
- python-3.x - 在熊猫中使用 ffill 时出现问题
- java - JAXB MOXy - XmlRootElement 对象上未读取 XmlJavaTypeAdapter 注释
- vue.js - 在 VueJS 中显示和过滤对象的正确方法
- python - 根据来自两个数据帧的条件创建一对
- kotlin - Apache Camel RabbitMQ 在 WAIT 状态下留下线程
- python - 如何摆脱 PyCharm 中的库根标记
- algorithm - 我的动态规划递归方法的时间复杂度是多少
- html - ng-select 组件在输入框和项目之间有间隙