Метод возвращает TypeError: индексы списка должны быть целыми числами или срезами, а не str - PullRequest
0 голосов
/ 06 августа 2020

Я использую openweathermap для получения данных о погоде, которые возвращают объект JSON, например:

blank = {
    "coord": {"lon": -92.11, "lat": 46.78},
    "weather": [
        {"id": 800, "main": "Unknown", "description": "Unknown", "icon": "01d"}
    ],
    "base": "stations",
    "main": {
        "temp": 0,
        "feels_like": 0,
        "temp_min": 0,
        "temp_max": 0,
        "pressure": 0,
        "humidity": 0,
    },
    "visibility": 0,
    "wind": {"speed": 0, "deg": 0},
    "clouds": {"all": 1},
    "dt": 0,
    "sys": {"type": 1, "id": 3903, "country": "US", "sunrise": 0, "sunset": 0},
    "timezone": 0,
    "id": 0,
    "name": "Unknown",
    "cod": 0,
}

У меня проблема с возвратом строки на ["weather"]["description"] Это вызовет ошибку типа TypeError: list indices must be integers or slices, not str

Метод:

class OpenWeather:
    def descrip(self):
        return self.data["weather"]["description"]

Есть ли у кого-нибудь советы?

1 Ответ

0 голосов
/ 06 августа 2020

Это должно быть

class OpenWeather:
    def descrip(self):
        return self.data["weather"][0]["description"]
        #                          ^^^

Или какое-то понимание списка, поскольку weather - это список (возможно, список словарей, но ваш пример включает только один словарь).

...