Разбить список словарей, возвращаемых вызовом API - PullRequest
0 голосов
/ 05 июня 2018

Недавнее обновление нашей среды Zabbix сломало некоторые предыдущие сценарии, написанные кем-то более продвинутым, чем я, и я в настоящее время застрял, пытаясь работать с возвращенным значением.

Я начинаю с достаточно простогоВызов API, который возвращает следующий dict:

webscenario = {
    u'httptestid': u'254', 
    u'steps': [
      {
        u'query_fields': [],
        u'name': u'GET Alert',
        u'no': u'1',
        u'url': u'http://{HOST.DNS}/{API}',
        u'follow_redirects': u'1',
        u'variables': []
        u'required': u'aries',
        u'posts': u'', 
        u'retrieve_mode': u'0', 
        u'httpstepid': u'700', 
        u'headers': [], 
        u'post_type': u'0', 
        u'timeout': u'15s', 
        u'status_codes': u'200',
        u'httptestid': u'254'
      }
    ], 
    u'name': u'Alerts API',
    u'headers': [
      {
        u'name': u'Content-Type', 
        u'value': u'application/json'
      }
    ]
}

Цель состоит в том, чтобы перестроить заголовки для автоматической отправки обновлений с использованием данных, возвращенных в приведенном выше вызове API.

headers_dict = dict()
headers = webscenario.get("headers")

for h in str(headers).splitlines():
    headers_dict.update({h.split(':')[1].strip(): h.split(':')[1].strip())})
print headers_dict

Первоначально это было записано как headers.splitlines(), и это привело к появлению некоторых ошибок (например, AttributeError: 'list' object has no attribute 'splitlines').Некоторые гуглили, и казалось, что добавление строкового идентификатора решило это исключение.Но теперь я сталкиваюсь с проблемами форматирования для заголовка, и я полностью застрял.

Вывод, который я получаю для заголовков, - это словарь списка (словарь-список?):

<type 'list'>: [{u'name': u'Content-Type', u'value': u'application/json'}]

Мне нужно создать следующий словарь:

{Content-Type: application/json}

За исключением Unicode-нотации, я могу работать над этой "проблемой" (если она вообще есть), как только смогу ее найтичто мне нужно.

1 Ответ

0 голосов
/ 05 июня 2018

Я предполагаю, что

formatted_headers = dict()
headers = webscenario.get("headers")

for header in headers:
    formatted_headers[header['name']] = header['value']

Достаточно для того, чего вам нужно достичь, верно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...