为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用python从嵌套的json中获取数据?

如何使用python从嵌套的json中获取数据?

UYOU 2021-08-05 15:03:45
我试图从这个 api 响应中获取一些数据。试图打印杀戮数量,但我不明白如何。因为在“stats”之后有很多“元数据”键。这是代码import requests import jsonimport sysurl = 'https://cod-api.tracker.gg/v1/standard/bo4/profile/1/Edr1X'headers = {'secret'} r = requests.get(url, headers=headers)print(r.text)#Get Kills amountdata = r.text#load the json to a string resp = json.loads(data)#get the statsprint (resp['data']['stats'])#get the amount of kills how?print (resp['data']['stats']['metadata']['kills'])我怎样才能获得击杀的价值?我必须遍历“元数据”吗?用for循环?
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

print([metadata['value'] for metadata in resp['data']['stats'] if metadata['metadata']['key'] == 'Kills'])


使用列表推导遍历每个元数据以查看其键是否为'Kills'.


或者,如果 kills 始终是列表的相同索引,则您可以只请求该列表位置。


这是我为验证您的信息而编写的测试:


def test_get_kills(self):

    import json

    resp = json.loads(resp)

    kills = [metadata['value'] for metadata in resp['data']['stats'] if metadata['metadata']['key'] == 'Kills']

    self.assertEqual(161, next(kills))

如果列表理解不是你的东西(它应该是),那么循环中的等价物将是:


for metadata in resp['data']['stats']:

    if metadata['metadata']['key'] == 'Kills':

        kills = metadata['value']


查看完整回答
反对 回复 2021-08-05
  • 1 回答
  • 0 关注
  • 245 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信