Попробовал назначить ключ из словаря переменной -list, индексы должны быть целыми или кусочками, а не str

1

Я попытался использовать rest api внутри python. Когда я попытался назначить ключ из словаря, который я создал с данными jason, эта ошибка возникла. Я новичок в python, и я не смог найти решение этого вопроса.

import requests
from pprint import pprint

lokka = str(input("What is the location you need information of?"))
#takes the location as "lokka"

hellload = requests.get("http://api.openweathermap.org/data/2.5/weather?q="+ lokka +"&appid=xxxxxxxxxxxxxxxxx&units=metric")
#the rest api load will be taken to the account of hellload

jputha = hellload.json()
#json data will be converted to a dictionary
#print (jputha)

#---------------------------------------------------------
#from now onward I'll be kickin the hell out the jsons
long = str(jputha["coord"]["lon"])
lat = str(jputha["coord"]["lat"])
wthr = str(jputha["weather"]["main"])
temp = str(jputha["main"]["temp"])
winspd = str(jputha["wind"]["speed"])

print(long)
print(lat)
print(wthr)
print(temp)
print(winspd)
  • 0
    не могли бы вы поделиться, какую ошибку вы получили?
  • 0
    jputha["coord"] возвращает значение, связанное с ключом "coord" который в этом случае выглядит как список. Список, однако, не может быть проиндексирован его элементами, только целыми числами. Для дальнейшего анализа вашей проблемы вы должны указать свой lokka пользователя lokka .
Теги:
rest
typeerror

1 ответ

2
Лучший ответ

Согласно документации OpenWeatherMap, ответ JSON от API выглядит следующим образом:

{"coord":
{"lon":145.77,"lat":-16.92},
"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04n"}],
"base":"cmc stations",
"main":{"temp":293.25,"pressure":1019,"humidity":83,"temp_min":289.82,"temp_max":295.37},
"wind":{"speed":5.1,"deg":150},
"clouds":{"all":75},
"rain":{"3h":3},
"dt":1435658272,
"sys":{"type":1,"id":8166,"message":0.0166,"country":"AU","sunrise":1435610796,"sunset":1435650870},
"id":2172797,
"name":"Cairns",
"cod":200}

где ключ weather содержит список dicts, а не dict, поэтому, если вам просто нужны первые данные о погоде из списка, вы должны использовать [0] чтобы вместо этого получить значение первого индекса:

wthr = str(jputha["weather"][0]["main"])

Ещё вопросы

Сообщество Overcoder
Наверх
Меню