Добавление списка в список в Python - PullRequest
0 голосов
/ 11 июля 2020

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

Я хочу выполнить 1000 запросов, а затем зарегистрировать каждый результат в виде списка результатов в списке (так что я знаю, какой список соответствует какой вызов API).

for item in response['output']['keywords']:
    TempEntityList = []
    TempEntityList.append(item['keywords'])
    EntityList.extend(TempEntityList)
    TempEntityList = []

Что добавляет все в список, но я не могу найти правильную настройку.

Я получаю следующее, когда запускаю его дважды, я получаю .

['Chat', 'Case', 'Telephone','Chat', 'Case', 'Telephone']

Когда я действительно хочу

[['Chat', 'Case', 'Telephone'],['Chat', 'Case', 'Telephone']]

Я создаю TempEntityList, добавляя к нему все найденные совпадения, расширяя EntityList на что было найдено, а затем очистить TempEntityList для следующего вызова API. каждый элемент является собственным вложенным элементом.

По запросу возвращаемые полезные данные выглядят следующим образом:

{
  "output": {
    "intents": [],
    "entities": [
      {
        "entity": "Chat",
        "location": [
          0,
          4
        ],
        "value": "Chat",
        "confidence": 1
      },
      {
        "entity": "Case",
        "location": [
          5,
          9
        ],
        "value": "Case",
        "confidence": 1
      },
      {
        "entity": "Telephone",
        "location": [
          10,
          19
        ],
        "value": "Telephony",
        "confidence": 1
      }
    ],
    "generic": []
  },
  "context": {
    "global": {
      "system": {
        "turn_count": 1
      },
      "session_id": "xxx-xxx-xxx"
    },
    "skills": {
      "main skill": {
        "user_defined": {
          "Case": "Case",
          "Chat": "Chat",
          "Telephone": "Telephony"
        },
        "system": {
          "state": "x"
        }
      }
    }
  }
}
{
  "output": {
    "intents": [],
    "entities": [
      {
        "entity": "Chat",
        "location": [
          0,
          4
        ],
        "value": "Chat",
        "confidence": 1
      },
      {
        "entity": "Case",
        "location": [
          5,
          9
        ],
        "value": "Case",
        "confidence": 1
      },
      {
        "entity": "Telephone",
        "location": [
          10,
          19
        ],
        "value": "Telephony",
        "confidence": 1
      }
    ],
    "generic": []
  },
  "context": {
    "global": {
      "system": {
        "turn_count": 1
      },
      "session_id": "xxx-xxx-xxx"
    },
    "skills": {
      "main skill": {
        "user_defined": {
          "Case": "Case",
          "Chat": "Chat",
          "Telephone": "Telephony"
        },
        "system": {
          "state": "xxx-xxx-xxx"
        }
      }
    }
  }
}
{
  "output": {
    "intents": [],
    "entities": [
      {
        "entity": "Chat",
        "location": [
          0,
          4
        ],
        "value": "Chat",
        "confidence": 1
      },
      {
        "entity": "Case",
        "location": [
          5,
          9
        ],
        "value": "Case",
        "confidence": 1
      },
      {
        "entity": "Telephone",
        "location": [
          10,
          19
        ],
        "value": "Telephony",
        "confidence": 1
      }
    ],
    "generic": []
  },

Ответы [ 2 ]

0 голосов
/ 11 июля 2020

Мне удалось получить то, что я хочу, спасибо всем за предложения.

Решение было:

global EntityList
EntityList = []
for item in response['output']['entities']:
    EntityList.append(item['entity'])
    FinalList.append(EntityList)

Что после трехкратного запуска функции на одном и том же входе произведено:

[[«Чат», «Дело», «Телефон»], [«Чат», «Дело», «Телефон»], [«Чат», «Дело», «Телефон»] ]

0 голосов
/ 11 июля 2020

Во-первых, поскольку у вас есть TempEntityList = [] в начале for l oop, вам не нужно добавлять еще TempEntityList = [] внизу. Чтобы ответить на вопрос, используйте list.append() вместо list.extend():

for item in response['output']['keywords']:
    TempEntityList = []
    TempEntityList.append(item['keywords'])
    EntityList.append(TempEntityList)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...