获取具有值的特定JSON键

ezykj2lf  于 2023-10-21  发布在  其他
关注(0)|答案(1)|浏览(148)

我使用的是MLB API,它以JSON格式输出数据。我想抓住关键的价值称为'事件'的每一个游戏是在关键路径liveData. plays. allPlays. result。我的问题是allPlays下面有多个字典/键(结果,关于等)。
运行这个。。:

  1. game_id = 748561
  2. url = "https://statsapi.mlb.com/api/v1.1/game/{0}/feed/live".format(game_id)
  3. response = requests.get(url)
  4. data = response.json()
  5. plays = data['liveData']['plays']['allPlays']['result']
  6. print(plays)

给了我这个错误:

  1. plays = data['liveData']['plays']['allPlays']['result']
  2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
  3. TypeError: list indices must be integers or slices, not str

但是运行这个:

  1. plays = data['liveData']['plays']['allPlays']
  2. for play in plays:
  3. event_values = play['result'].values()
  4. print (event_values)

返回多行类似于这是每个游戏的发挥:

  1. dict_values(['atBat', 'Strikeout', 'strikeout', 'Vaughn Grissom strikes out swinging.', 0, 1, 3, True])

现在我明白了,第一次运行的“result”中有多个键,我需要一个for循环来遍历每个“result”字典,我试过了,但我不知道如何在每次播放时只获取“event”键的值,在我的例子中,这是第二个值,称为“Strikeout”(而不是第二个strikeout)。

kcrjzv8t

kcrjzv8t1#

第一次运行的“结果”中有多个键
错误是告诉你这是一个列表。列表没有键;他们有独立的
这将得到第二个元素

  1. plays = data['liveData']['plays']
  2. second = plays['allPlays'][1]
  3. print(second['result'])

除此之外,values()并不能帮助打印有用的信息。使用items()查看键和值

相关问题