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