我使用的是MLB API,它以JSON格式输出数据。我想抓住关键的价值称为'事件'的每一个游戏是在关键路径liveData. plays. allPlays. result。我的问题是allPlays下面有多个字典/键(结果,关于等)。
运行这个。。:
game_id = 748561
url = "https://statsapi.mlb.com/api/v1.1/game/{0}/feed/live".format(game_id)
response = requests.get(url)
data = response.json()
plays = data['liveData']['plays']['allPlays']['result']
print(plays)
给了我这个错误:
plays = data['liveData']['plays']['allPlays']['result']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
TypeError: list indices must be integers or slices, not str
但是运行这个:
plays = data['liveData']['plays']['allPlays']
for play in plays:
event_values = play['result'].values()
print (event_values)
返回多行类似于这是每个游戏的发挥:
dict_values(['atBat', 'Strikeout', 'strikeout', 'Vaughn Grissom strikes out swinging.', 0, 1, 3, True])
现在我明白了,第一次运行的“result”中有多个键,我需要一个for循环来遍历每个“result”字典,我试过了,但我不知道如何在每次播放时只获取“event”键的值,在我的例子中,这是第二个值,称为“Strikeout”(而不是第二个strikeout)。
1条答案
按热度按时间kcrjzv8t1#
第一次运行的“结果”中有多个键
错误是告诉你这是一个列表。列表没有键;他们有独立的
这将得到第二个元素
除此之外,values()并不能帮助打印有用的信息。使用items()查看键和值