我正在尝试从API收集天气数据,然后将其存储在数据库中以供以后使用。
我已经能够使用for循环访问数据并将其打印出来,但是我想将for循环的每次迭代分配给一个变量,该变量存储在数据库的不同位置。
我该怎么做?
下面的我当前的代码:
#!/usr/bin/python3
from urllib.request import urlopen
import json
apikey="redacted"
# Latitude & longitude
lati="-26.20227"
longi="28.04363"
# Add units=si to get it in sensible ISO units
url="https://api.forecast.io/forecast/"+apikey+"/"+lati+","+longi+"?units=si"
meteo=urlopen(url).read()
meteo = meteo.decode('utf-8')
weather = json.loads(meteo)
cTemp = (weather['currently']['temperature'])
cSum = (weather['currently']['summary'])
cRain1 = (weather['currently']['precipProbability'])
cRain2 = cRain1*100
daily = (weather['daily']['summary'])
print (cTemp)
print (cSum)
print (cRain2)
print (daily)
#Everthing above this line works as expected, I am focusing on the below code
dailyTHigh = (weather['daily']['data'])
for i in dailyTHigh:
print (i['temperatureHigh'])
给我以下输出:
12.76
Clear
0
No precipitation throughout the week, with high temperatures rising to 24°C on Friday.
22.71
22.01
22.82
23.13
23.87
23.71
23.95
22.94
如何将8个高温中的每个温度分配给不同的变量?
即, var1 = 22.71 var2 = 22.01 等
预先感谢
答案 0 :(得分:2)
IMO,您需要某种动态长度数据结构,可以在其中将数据附加到for
循环中,然后使用index
进行访问。
因此,您可以创建一个list
,然后将for
lop的所有值附加到其中,如下所示:
list = []
for i in dailyTHigh:
list.append(i['temperatureHigh'])
现在,您将能够访问list
的值,如下所示:
for i in range(0,len(x)):
print x[i]
上面的方法很好,因为您不需要知道需要插入的项目数,因为您可能需要相等数量的变量才能为其分配值。您还可以轻松访问这些值。
答案 1 :(得分:1)
请整理一下我对已接受答案的上述评论
#Everthing above this line works as expected, I am focusing on the below code
dailyTHigh = (weather['daily']['data'])
list = []
for i in dailyTHigh:
list.append(i['temperatureHigh'])
for i in range(0,len(list)):
var1 = list[0]
var2 = list[1]
将每个列表迭代保存到一个变量中,我知道总是会有8个变量,所以这对我有用
print (var1)
仅仅为了测试就给了我我想要的东西
答案 2 :(得分:0)
IMO,您可以使用堆栈数据结构并将数据以FILO(先进先出)形式存储。这样,您就可以以更有效的方式管理数据,即使它的大小(将来)会更大