Существует ли тернарный оператор в python
Я пытаюсь сделать тернарный оператор для python, чтобы проверить, существует ли значение моего словаря, затем использовать его или оставить пустым, например, в коде ниже я хочу получить значение creator
и assignee
, если значение не существует, я хочу, чтобы оно было ''
, если есть способ использовать тернарный оператор в python?
Вот мой код :
in_progress_response = requests.request("GET", url, headers=headers, auth=auth).json()
issue_list = []
for issue in in_progress_response['issues'] :
# return HttpResponse( json.dumps( issue['fields']['creator']['displayName'] ) )
issue_list.append(
{
"id": issue['id'],
"key": issue['key'],
# DOESN'T WORK
"creator": issue['fields']['creator']['displayName'] ? '',
"is_creator_active": issue['fields']['creator']['active'] ? '',
"assignee": issue['fields']['assignee']['displayName'] ? '',
"is_assignee_active": issue['fields']['assignee']['active'] ? '',
"updated": issue['fields']['updated'],
}
)
return issue_list
Тернарные операторы в python действуют следующим образом:
condition = True
foo = 3.14 if condition else 0
Но для вашего конкретного случая использования следует рассмотреть возможность использования dict.get()
. Первый аргумент указывает, к чему вы пытаетесь получить доступ, а второй аргумент определяет возвращаемое значение по умолчанию, если ключ не существует в словаре.
some_dict = {'a' : 1}
foo = some_dict.get('a', '') # foo is 1
bar = some_dict.get('b', '') # bar is ''
Вы можете использовать .get(…)
[Django-doc] для того, чтобы попытаться получить элемент из словаря и вернуть необязательное значение по умолчанию в случае, если словарь не содержит заданного ключа, вы можете реализовать это следующим образом:
"creator": issue.get('fields', {}).get('creator', {}).get('displayName', ''),
то же самое с другими предметами.
если вы хотите использовать что-то вроде троичной системы, то вы можете сказать
value = issue['fields']['creator']['displayName'] if issue['fields']['creator'] else ""