Как сохранить несколько словарей Python или объединить в цикле и вернуться?

Я пытаюсь получить результаты разбиения на страницы двух страниц, но return выходит из цикла и отображает только один результат со страницы.

Есть ли способ сохранить или объединить их?

  def incidents():
        m = True
        limit = 50
        offset = 0

        while m == True:
            url = f"{URL}/incidents"
            params = {
                "statuses[]": "resolved",
                "include[]" : 'channel',
                "limit"     : limit,
                "offset"    : offset,
                "total"     : "true",
            }
            r = requests.get(url, headers=headers, params=params)
            data = r.json()

            offset += 50
            print(offset, (r.text))
            more = False # Set deliberately for easier understanding

        return data

Вывод offset, (r.text) выглядит так:

50 {"incidents":[{"incident_number":1,"title":"crit server is on fire" ....


100 {"incidents":[{"incident_number":54,"title":"ghdg","description":"ghdg",....

Возврат отображается только ниже, а не другой. Должен ли быть способ, например, использовать генератор? Итак, мы можем объединить их обоих и сохранить в переменной данных, чтобы данные можно было вернуть?

100 {"incidents":[{"incident_number":54,....

Отвечает ли это на ваш вопрос? stackoverflow.com/questions/51626170/…

SLDem 23.04.2022 12:49
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения текстовых сообщений может быть настолько сложным или простым, насколько вы его сделаете. Как и в любом ML-проекте, вы можете выбрать...
7 лайфхаков для начинающих Python-программистов
7 лайфхаков для начинающих Python-программистов
В этой статье мы расскажем о хитростях и советах по Python, которые должны быть известны разработчику Python.
Установка Apache Cassandra на Mac OS
Установка Apache Cassandra на Mac OS
Это краткое руководство по установке Apache Cassandra.
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
В одном из недавних постов я рассказал о том, как я использую навыки количественных исследований, которые я совершенствую в рамках программы TPQ...
Создание персонального файлового хранилища
Создание персонального файлового хранилища
Вы когда-нибудь хотели поделиться с кем-то файлом, но он содержал конфиденциальную информацию? Многие думают, что электронная почта безопасна, но это...
Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
2
1
39
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я считаю, что вы могли бы сохранить результаты в своем собственном списке:

incidents = []

а потом

data = r.json()
for element in data['incidents']:
    incidents.append(element)

Отредактировано для ясности — таким образом вы собираете все инциденты в один объект.

данные имеют тип dict, а не список

Dee 23.04.2022 13:03

Получив список инцидентов, вы можете создать словарь res_dict = {'incidents': results}

Michał 23.04.2022 13:07

Спасибо Михал. Я пытался добавить раньше и получил ошибку, что добавление предназначено только для списков или что-то в этом роде. ваши решения работают нормально.

Dee 23.04.2022 13:28

Я не уверен, потому что вы только что дали самое начало r.text (есть ли в результате больше, чем «инциденты»?), но я ожидаю, что предыдущий ответ будет немного коротким; я бы предложил что-то вроде

results = []

(до того как) и в конце

    data = r.json()
    results += data['incidents']

return results

(кстати: в вашем исходном сообщении каждый запуск выполняется, пока просто устанавливается переменная «данные», поэтому неудивительно, что возврат может иметь дело только с самой последней полученной частью. Но я думаю, что это просто артефакт вашего упрощения, например " more=False" даже предотвратит получение второй страницы)

Другие вопросы по теме