Как назначить каждую итерацию из цикла for переменной для хранилища базы данных - PullRequest
1 голос
/ 27 апреля 2019

Я пытаюсь собрать данные о погоде из 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 и т. д.

Заранее спасибо,

Ответы [ 3 ]

2 голосов
/ 27 апреля 2019

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 голос
/ 27 апреля 2019

Просто чтобы проверить мой комментарий к принятому ответу

#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)

Только для тестирования дает мне то, что я искал

0 голосов
/ 27 апреля 2019

IMO вы можете использовать структуру данных стека и хранить данные в форме FILO (First In Last Out). Таким образом, вы также можете управлять данными более эффективно, даже если их размер станет больше (в будущем)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...