TypeError: списочные индексы должны быть целыми или кусочками, а не str в цикле python - PullRequest
0 голосов
/ 27 сентября 2019

Я искал другие ответы, ( это ), например, и мне не повезло.Я пишу сценарий для извлечения данных из API.

Я хочу пройтись по результирующему словарю и извлечь подробности для каждого результата, такие как имя, популяция и т. Д. Образец полученного ответа с использованием json.dumps:

{
    "count": 61,
    "next": "https://swapi.co/api/planets/?page=2",
    "previous": null,
    "results": [
        {
            "climate": "temperate",
            "created": "2014-12-10T11:35:48.479000Z",
            "diameter": "12500",
            "edited": "2014-12-20T20:58:18.420000Z",
            "films": [
                "https://swapi.co/api/films/6/",
                "https://swapi.co/api/films/1/"
            ],
            "gravity": "1 standard",
            "name": "Alderaan",
            "orbital_period": "364",
            "population": "2000000000",
            "residents": [
                "https://swapi.co/api/people/5/",
                "https://swapi.co/api/people/68/",
                "https://swapi.co/api/people/81/"
            ],
            "rotation_period": "24",
            "surface_water": "40",
            "terrain": "grasslands, mountains",
            "url": "https://swapi.co/api/planets/2/"
        },
        {
            "climate": "temperate, tropical",
            "created": "2014-12-10T11:37:19.144000Z",
            "diameter": "10200",
            "edited": "2014-12-20T20:58:18.421000Z",
            "films": [
                "https://swapi.co/api/films/1/"
            ],
            "gravity": "1 standard",
            "name": "Yavin IV",
            "orbital_period": "4818",
            "population": "1000",
            "residents": [],
            "rotation_period": "24",
            "surface_water": "8",
            "terrain": "jungle, rainforests",
            "url": "https://swapi.co/api/planets/3/"
        },
        {
            "climate": "frozen",
            "created": "2014-12-10T11:39:13.934000Z",
            "diameter": "7200",
            "edited": "2014-12-20T20:58:18.423000Z",
            "films": [
                "https://swapi.co/api/films/2/"
            ],
            "gravity": "1.1 standard",
            "name": "Hoth",
            "orbital_period": "549",
            "population": "unknown",
            "residents": [],
            "rotation_period": "23",
            "surface_water": "100",
            "terrain": "tundra, ice caves, mountain ranges",
            "url": "https://swapi.co/api/planets/4/"
        },

Впервые в Python, так что если есть лучший способ сделать это, я открыт для предложений!

В моем коде для тестирования у меня есть это:

print(jsonResponse["results"][1]["name"])

Я могу вручную изменить 1 на другие числа и получить правильное имя для печати. ​​

Если я использую это, я получаю "индексы списка должны быть целыми числами или ломтиками,не str "сообщение

for i in jsonResponse:
            print(jsonResponse["results"][i]["name"])

1 Ответ

0 голосов
/ 27 сентября 2019
  1. Вы хотите зациклить элементы в jsonResponse["results"], а не jsonResponse.
  2. Ваш цикл будет предоставлять фактические элементы, а не их индексы.

Что заставляет вас:

for item in jsonResponse["results"]:
    print(item["name"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...