Я пытаюсь получить ряд продуктов, которые ограничены 250 элементами за вызов, и объединить их в один словарь. Результат (на страницу) — response.json()
itemcount = getProductCount() // 658
print("total products: " + str(itemcount))
pages = math.ceil(itemcount/250) // 3
page =1
print("pages: "+str(pages))
allproducts = {'products': [{}]}
while page <= pages:
print("page: " +str(page))
products = getProducts(lang, page, 250)
allproducts.update(products)
# for p in products['products']:
# print(p['id'])
page += 1
print(allproducts)
результат примерно такой.
Итак, я вижу, что мой цикл работает и количество страниц правильное.
единственное, что неверно, это то, что allproducts содержит только последние 158 элементов.
всего товаров: 658
страницы: 3
страница: 1
Страница: 2
страница: 3
{'products': [{'id': 63252188, 'createdAt': '2018-01-11T15:20:16+01:00', 'updatedAt': '2018-04-25T16:35:44+02: 00", "isVisible": True, "visibility": "visible", "hasMatrix": False, "data01": '', 'data02': '', 'data03': '
так далее..
Когда я распечатываю все p['id'] в каждом цикле, я вижу, что он печатает все 658 идентификаторов продуктов.
Что мне здесь не хватает? Или я должен сделать это совершенно по-другому?





Я думаю, что проблема с кодом заключается в том, что метод .update сохраняет замена значение allproducts['products'] вместо объединения существующего значения с дополнительным списком продуктов.
Вместо
allproducts = {'products': [{}]}
while page <= pages:
print("page: " +str(page))
products = getProducts(lang, page, 250)
allproducts.update(products)
пытаться
allproducts = {'products': []} # modified [{}] to []
while page <= pages:
print("page: " +str(page))
products = getProducts(lang, page, 250)
allproducts['products'].extend(products['products']) # extend instead of update
сделал это спасибо, я не думал превратить это в список