Разбор данных JSON в Python

Это файл json, который я хочу разобрать

{
    "results": [
        {
            "gender": "male",
            "name": {
                "title": "mr",
                "first": "brad",
                "last": "gibson"
            },
            "location": {
                "street": "9278 new road",
                "city": "kilcoole",
                "state": "waterford",
                "postcode": "93027",
                "coordinates": {
                    "latitude": "20.9267",
                    "longitude": "-7.9310"
                }
            },
            "picture": {
                "large": "https://randomuser.me/api/portraits/men/75.jpg",
                "medium": "https://randomuser.me/api/portraits/med/men/75.jpg",
                "thumbnail": "https://randomuser.me/api/portraits/thumb/men/75.jpg"
            }
        }
    ]
}

Я могу легко получить доступ к первому элементу i.e(gender), используя

 response = requests.get('https://randomuser.me/api')
 data = response.json()

 ans = data['results'][0]['gender']
 print(ans)

но я не понимаю, как получить доступ к элементам "имени", т.е. название, первый, последний

Я старался

ans = data['results'][1]['name'][0]['title']

Ошибка: индекс выходит за пределы


person shaswat kumar    schedule 09.01.2020    source источник
comment
Используйте кавычки для доступа к полю имени: data['results'][1]['name'][0]. Здесь вы пытаетесь использовать переменную имени вместо строки.   -  person Julien Roullé    schedule 09.01.2020


Ответы (2)


имя должно быть в кавычках.

Измените этот формат.

ans = data['results'][1][name][0]

К этому

ans = data['results'][0]['name']['first']
person High-Octane    schedule 09.01.2020
comment
Но в списке только один элемент - person harandk; 09.01.2020
comment
@shaswatkumar это сработало? ans = данные['результаты'][0]['имя']['первый'] - person High-Octane; 09.01.2020
comment
Хорошо, но я внес больше изменений, чем просто опечатка, пожалуйста, попробуйте. - person High-Octane; 09.01.2020
comment
['name'][0] нет. Таким образом, этот ответ правильный (как и ответ @ekneiling) - person JAAulde; 09.01.2020
comment
Но как мы получаем доступ к «имени», то есть 1-му индексу, используя [0], то есть то же самое, что и «пол» - person shaswat kumar; 09.01.2020
comment
Да, потому что все они присутствуют в одном списке, и поскольку есть только один элемент, это «0». - person High-Octane; 09.01.2020

Похоже, есть только один результат, поэтому используйте тот же индекс, что и для пола. Кроме того, имя dict, а не list

ans = data['results'][0]['name']['title']
person ekneiling    schedule 09.01.2020