Форматирование массива json для добавления метки к значениям в Python - PullRequest
0 голосов
/ 12 февраля 2020

Я пишу сценарий python, чтобы извлечь некоторые данные из устройства, и мне нужно отформатировать вывод json. Теперь у меня есть этот вывод (пример):

[
    [
        "Environment",
        "ok"
    ],
    [
        "Memory",
        "ok"
    ]
]

Но я хочу добавить метки для вызова значений, как в этом примере:

[
    [
        {"component":"Environment",
        "status":"ok"}
    ],
    [
        {"component":"Memory",
        "status":"ok"}
    ]
]

Я пытаюсь найти в Интернете , но я не могу найти то, что я ищу. Это возможно?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 12 февраля 2020

Попробуйте это ...

intermediate_output = [
    [
        "Environment",
        "ok"
    ],
    [
        "Memory",
        "ok"
    ]
]

final_output = [[{"component": x[0], "status": x[1]}] for x in intermediate_output]

print(final_output)

Вывод:

[[{'component': 'Environment', 'status': 'ok'}], [{'component': 'Memory', 'status': 'ok'}]]

РЕДАКТИРОВАТЬ:

Теперь, если вы хотите список всех компонентов, прежде чем двигаться вперед, Я бы посоветовал вам удалить свой вложенный список и сделать его простым списком.

>>> striped_list = [list1[0] for list1 in final_output]
>>> striped_list

[{'component': 'Environment', 'status': 'ok'}, {'component': 'Memory', 'status': 'ok'}]

Теперь используйте понимание списка ...

>>> list_of_components = [item['component'] for item in striped_list]
>>> list_of_components

['Environment', 'Memory']

Для статуса определенного компонент, снова вы можете использовать для циклов или списков.

>>> my_component = "Environment" # we have to find status of this component

>>> my_component_status = [item['status'] for item in striped_list if item['component'] == my_component]

>>> my_component_status

['ok']

Отличная документация для понимания списка списков

https://www.pythonforbeginners.com/basics/list-comprehensions-in-python

Ура !!

1 голос
/ 12 февраля 2020

Попробуйте это.

Использование Понимание списка .

a= [['Environment', 'ok'], ['Memory', 'ok']]
[{'component':x,'status':y} for x,y in a ]

output

[{'component': 'Environment', 'status': 'ok'},
 {'component': 'Memory', 'status': 'ok'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...