Попытка выполнить итерацию по dict, связанному в другом dict из API Python

#python #django #api #dictionary

#python #django #API #словарь

Вопрос:

Я пытаюсь выяснить, как получить данные из этой конечной точки API. Это API Sportsipy. В конечной точке Boxscores он возвращает словарь списка игр с базовой информацией, одним из значений в этом словаре является список ‘boxscore’, который содержит всю статистику из этой отдельной игры.

Когда я пытаюсь использовать точечную нотацию, она просто возвращает ошибку, в которой говорится, что у dict нет атрибута boxscore. Если я попробую цикл for, он скажет, что его невозможно повторить.

Конечная точка Boxscores исходного кода, которая затем ссылается на конечную точку boxscore. Boxscore
Boxscores

     import requests
    from django.shortcuts import render    
    from datetime import datetime
    from sportsipy.ncaab.boxscore import Boxscore
    from sportsipy.ncaab.boxscore import Boxscores


    def management(request):
        games = Boxscores(datetime(2021, 2, 13))
        # See output below (partial and re-formatted)
        print(games.games) 
        print(games.games['2-13-2021'][0]['boxscore'])
        # Below - Error: dict has no attribute 'boxscore'
        print(games.games.boxscore) 

        context = {
            'games': games
        }

        return render(request, 'management/management.html', context)
 
     print(games.games)
    {'2-13-2021': [{'boxscore': '2021-02-13-18-san-francisco', 
    'away_name': 'Gonzaga', 'away_abbr': 'gonzaga', 'away_score': 100, 
    'away_rank': 1, 'home_name': 'San Francisco', 'home_abbr': 'san- 
    francisco', 'home_score': 61, 'home_rank': None, 'non_di': False, 
    'top_25': True, 'winning_name': 'Gonzaga', 'winning_abbr': 'gonzaga', 
    'losing_name': 'San Francisco', 'losing_abbr': 'san-francisco'}, 
    {'boxscore': '2021-02-13-12-ohio-state', 'away_name': 'Indiana', 
    'away_abbr': 'indiana', 'away_score': 59, 'away_rank': None, 
    'home_name': 'Ohio State', 'home_abbr': 'ohio-state', 'home_score': 
    78, 'home_rank': 4, 'non_di': False, 'top_25': True, 'winning_name': 
    'Ohio State', 'winning_abbr': 'ohio-state', 'losing_name': 'Indiana', 
    'losing_abbr': 'indiana'},
 

Комментарии:

1. Если это dict, вам, вероятно, стоит попробовать games.games["boxscore"] . Это не javascript 😉

2. Я пробую это, и я получаю ключевую ошибку «boxscore»

3. Пожалуйста, предоставьте выходные print(games.games) данные . Это может помочь определить, в чем проблема на самом деле.

4. загружен скриншот print(games.games)

5. На скриншоте не указано начало структуры, но похоже boxcore , что ключ упакован в список. Попробуйте games.games['2-13-2021'][0]['boxscore'] . Кроме того, не могли бы вы попытаться захватить часть выходных данных в абзаце исходного кода в вашем вопросе вместо скриншота? Для этого вывода вы могли бы использовать pprint стандартную библиотеку?