У меня есть сценарий python, который подключается к API-интерфейсу graphql и отправляет POST, поэтому мне возвращается JSON, этот API принадлежит kanban, где у него есть карты, упорядоченные по рабочему процессу, моя проблема и я Я имею 152 карты, и этот запрос я возвращаю 143, потому что некоторые карты не назначены людям, существуют только в рабочем процессе. Это генерирует ошибку индекса для так называемого 'assignees': row ['assignees'][0]['fullname']
, я поместил try/except
с индексным фильтром и заставил его снова добавить эту строку в словарь, давая полное имя Null
, однако это, похоже, не удалось, потому что общее количество карточек 153, а не 143. Есть ли более элегантный способ сделать эту инженерию данных?
py:
dataDict = {}
for row in ModelData:
try:
dataDict.update(
{ row["identifier"]:
{'title' : row["title"],
'description' : row["description"],
'assignees' : row['assignees'][0]['fullname'],
'createdAt' : row["createdAt"]}})
except IndexError as e:
dataDict.update(
{ row["identifier"]:
{'title' : row["title"],
'description' : row["description"],
'assignees' : "",
'createdAt' : row["createdAt"]}})
pass
пример данных:
{
"identifier": "x5g",
"title": "card name",
"description": "hello world",
"assignees": {"fullname": "John"},
"createdAt": "2020-04-04"
}
Что порождает ошибку ::
{
"identifier": "x6g",
"title": "card name 2",
"description": "hello world",
"assignees": {"fullname": ""},
"createdAt": "2020-04-04"
}