@rsytrade

Как обойти json и обработать исключения?

Есть файл json в котором, среди прочего, может быть, а может и не быть ключ career (так же в этом разделе могут быть не все поля заполнены):

{"first_name":"Иван","last_name":"Иванов","bdate":"12.12.2020","site":"xxx.ru","occupation":{"id":297,"name":"МФТИ (Физтех)","type":"university"},"career":[{"city":"Москва","company":"Рога и копыта","from":2006,"position":"продавец","until":2010}],"university_name":"МФТИ (Физтех)","faculty_name":"Факультет проблем физики и энергетики","graduation":1995,"education_status":"Выпускник (магистр)"}


Пытаюсь обойти следующим циклом:
for i in response.json()['response']['items']:
            edu = {
                "faculty": i.get('faculty_name'),
                "chair": i.get('university_name'),
                "enter_year": None,
                "graduation_year": i.get('graduation')
            }
            if i.get('career'):
                career = []
                for y in i['career']:
                    career.append(
                        {
                            "company": i['career'][y]['company'],
                            "company_web_site": i.get('site'),
                            # "city": i['career'][y]['city_id'],
                            "employemnt_year": i['career'][y]['from'],
                            "quit_year": i['career'][y]['until'],
                            "position": i['career'][y]['position'],
                            "desc": None
                        }
                    )
            else:
                career = None


получаю следующую ошибку:
"company": i['career'][y]['company'],
TypeError: list indices must be integers or slices, not dict


что не верно, где ошибка?
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
B y уже лежат нужные вам данные, а именно словарь из career. Так что
"company": y['company'],
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы