我試圖從這個 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']
添加回答
舉報
0/150
提交
取消