Динамически генерировать полезную нагрузку на основе одноуровневых списковPython

Программы на Python
Ответить
Anonymous
 Динамически генерировать полезную нагрузку на основе одноуровневых списков

Сообщение Anonymous »

Резюме
Мне нужно преобразовать список в JSON, но я хочу условно обернуть некоторые данные в сгенерированный массив на основе значений соседних элементов списка. И хотелось бы элегантный способ сделать это (Python 3.13)
Подробнее
У меня есть процесс, который принимает вызовы в формате

Код: Выделить всё

command: str
device: str
command_options: str
payload: dict[str, Any]
и существует процесс пакетной обработки, который объединяет их, чтобы уменьшить количество вызовов внешнего API. Это принимает любые запросы за короткий промежуток времени и превращает их в список, который затем передается фактическому диспетчеру, который отправляет внешний вызов API.
Обычно полезная нагрузка будет

Код: Выделить всё

{
nodes: [
payload1...,
payload2...,
payload3...
]
}
поэтому диспетчер просто берет полезную нагрузку из каждого вызова и добавляет ее в массив JSON.
Однако я хочу использовать параллелизм во внешнем API и обертывать вызовы, которые имеют
  • одну и ту же команду
  • одинаковые параметры команды
  • на другом устройстве
так что, если у вас было

Код: Выделить всё

  command: C1
device: D1
command_options: C1O1
payload: ... # payload 1

Код: Выделить всё

  command: C2
device: D2
command_options: C2O1
payload: ... # payload 2

Код: Выделить всё

  command: C2
device: D3
command_options: C2O1
payload: ... # payload 3

Код: Выделить всё

  command: C3
device: D3
command_options: C3O1
payload: ... # payload 4
Я хочу преобразовать это в

Код: Выделить всё

{
nodes: [
payload1...,
parallelNode: [
payload2...,
payload3...
],
payload4 ...
]
}
Однако я попадаю в сценарий с курицей и яйцом, как будто вы повторяете список, и знаете, что вам нужен только параллельный узел, когда вы добираетесь до второго элемента в этой группе.
Ищу эффективный способ обработки этого ввода в желаемый выходной формат.>

Подробнее здесь: https://stackoverflow.com/questions/798 ... t-siblings
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»