Exception Type: KeyError

В Api в некоторых полях нет данных {}. Из-за этого ругается на строчку if sc[key][0]: Пишет:

Exception Type: KeyError Exception Value: 0

Как заменить чтобы при остуствии данных записывал знак ? во многих полях где данные есть всё работает нормально.

def stats_as_json(self):
    sc=json.loads(self.statsJson)
    ret={'3points':{},'2points':{}}
    for key in ['3points','2points']:
        if not key in sc: continue;
        if sc[key][0]:
            ret[key]['home']=sc[key][0]
        if sc[key][1]:
            ret[key]['away']=sc[key][1] 
    return ret

if isinstance(sc[key], list):

Пробовал .get и try exc

JSON запрос к API:

default_stats = {'3points': {'home': '', 'away': ''},'2points': {'home': '', 'away': ''}}

и

statsJson=json.dumps({**default_stats, **(e.get('stats') or {})}),

Данные с API:

"stats":{"2points":["18","22"],"3points":["11","12"],

Ответы (1 шт):

Автор решения: gil9red

Как заменить чтобы при остуствии данных записывал знак "?"

Попробуйте:

def stats_as_json(self):
    sc = json.loads(self.statsJson)
    ret = {'3points': {}, '2points': {}}
    for key in ['3points','2points']:
        if key not in sc: continue
        ret[key]['home'] = sc[key].get('home') or "?"
        ret[key]['away'] = sc[key].get('away') or "?"
    return ret

Без привязки к конкретным ключам:

def stats_as_json(self):
    sc = json.loads(self.statsJson)
    ret = {'3points': {}, '2points': {}}
    for key in ['3points', '2points']:
        if key not in sc: continue
        for k, v in sc[key].items():
            ret[key][k] = v or "?"
    return ret
→ Ссылка