繁体   English   中英

如何为多个实例打印特定的 json 数据?

[英]How to print specific json data for multiple instances?

import requests

url = "https://api.gametools.network/bf1/players/?gameId=7218126050214"
r = requests.get(url)
data = r.json()
print(data['teams'][1]['players'][0]['name'])
print(data['teams'][1]['players'][1]['name'])
print(data['teams'][1]['players'][2]['name'])
print(data['teams'][1]['players'][3]['name'])
print(data['teams'][1]['players'][4]['name'])
print(data['teams'][1]['players'][5]['name'])
print(data['teams'][1]['players'][6]['name'])
print(data['teams'][1]['players'][7]['name'])
print(data['teams'][1]['players'][8]['name'])
print(data['teams'][1]['players'][9]['name'])
print(data['teams'][1]['players'][10]['name'])
print(data['teams'][1]['players'][11]['name'])
print(data['teams'][1]['players'][12]['name'])
print(data['teams'][1]['players'][13]['name'])
print(data['teams'][1]['players'][14]['name'])
print(data['teams'][1]['players'][15]['name'])
print(data['teams'][1]['players'][16]['name'])
print(data['teams'][1]['players'][17]['name'])
print(data['teams'][1]['players'][18]['name'])
print(data['teams'][1]['players'][19]['name'])
print(data['teams'][1]['players'][20]['name'])

这是我的代码片段,我认为可以真正改进以节省一些空间,问题是我似乎无法找到一种方法来枚举所有玩家的名字,除了像上面显示的那样一个一个地做,我的目标是有一个列表,将显示给定服务器的两个团队的每个用户名。

我应该提到代码当前正在运行,但我觉得有一种更简单的方法来获取我需要的数据,我确实搜索了这些方法,但因为我的数据嵌套在列表/字典中,我感到困惑。

欢迎任何建议,谢谢:)

以下是迭代列表的方法:

l = [1, 2, 3, 4]

for element in l:
    print(l)

一旦您知道这一点,只需将嵌套迭代问题分解为上述最简单的形式即可。 因此,您只需要获取需要迭代的列表,然后使用您已经知道的上述示例:

l = data['teams'][1]['players']
for element in l:
    print(element['name'])

让我们编写一个简单的函数,它接受来自团队的数据并使用 for 循环来迭代玩家。

def printTeamNames(team):
    print(team["teamid"])
    for player in team["players"]: print(player["name"])

然后我们可以向该函数传递每个团队的数据。

printTeamNames(data["teams"][0])
printTeamNames(data["teams"][1])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM