Проблема: похоже, что вывод этого кода повторяет множество одинаковых записей в окончательном списке, что делает его экспоненциально длиннее.
Целью было бы завершить запрос и распечатать окончательный список с весь город в регионе
[
{
"name": "Herat",
"id": "AF~HER~Herat"
}
]
[
{
"name": "Herat",
"id": "AF~HER~Herat"
},
{
"name": "Kabul",
"id": "AF~KAB~Kabul"
}
]
[
{
"name": "Herat",
"id": "AF~HER~Herat"
},
{
"name": "Kabul",
"id": "AF~KAB~Kabul"
},
{
"name": "Kandahar",
"id": "AF~KAN~Kandahar"
}
]
Моя цель - получить список с cityID. Сначала я выполняю запрос GET и анализирую ответ JSON, чтобы получить идентификаторы стран в списке,
Во-вторых: у меня есть запрос l oop, который сделает еще один запрос GET для идентификатора региона, но теперь мне нужно добавить идентификаторы стран в URL-адрес API. Я делаю это, добавляя .format в запрос GET. и перебираю все страны и соответствующие идентификаторы регионов, я анализирую их и сохраняю в списке.
В-третьих: у меня есть еще один для l oop, который сделает еще один запрос GET для cityID, который будет l oop через все города с указанным выше списком идентификаторов регионов, и, соответственно, соберите идентификатор города, который мне действительно нужен.
Код:
from requests.auth import HTTPBasicAuth
import requests
import json
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
def countries():
data = requests.get("https://localhost/api/netim/v1/countries/", verify=False, auth=HTTPBasicAuth("admin", "admin"))
rep = data.json()
a = []
for elem in rep['items']:
a.extend([elem.get("id","")])
print(a)
return a
def regions():
ids = []
for c in countries():
url = requests.get("https://localhost/api/netim/v1/countries/{}/regions".format(c), verify=False, auth=HTTPBasicAuth("admin", "admin"))
response = url.json()
for cid in response['items']:
ids.extend([cid.get("id","")])
data = []
for r in ids:
url = requests.get("https://localhost/api/netim/v1/regions/{}/cities".format(r), verify=False, auth=HTTPBasicAuth("admin", "admin"))
response = url.json()
data.extend([{"name":r.get("name",""),"id":r.get("id", "")} for r in response['items']])
print(json.dumps(data, indent=4))
return data
regions()
print(regions())
Вы увидите, что вывод содержит несколько копий той же записи.
Не программист, не уверен, где я ошибаюсь