resources = [
{
name: 'xxxxx',
type: 'linux'
},
{
name: 'yyyyy',
type: 'linux'
},
{
name: 'zzzzz',
type: 'windows'
},
]
В моем сценарии python я хотел получить linux ресурсов из списка всех ресурсов, как в приведенном выше примере JSON. Следующие две строки кода оправдали мои ожидания, но сначала необходимо удалить «Нет» с помощью фильтра, который создает другой список.
value = list((res if 'type' in res and res['type'] == 'linux' else None) for res in resources)
в результате, значение возвращает список с None
[
{
name: 'xxxxx',
type: 'linux'
},
{
name: 'yyyyy',
type: 'linux'
},
None
]
Таким образом, я использовал фильтр, чтобы удалить None из списка.
linux_resources = list(filter(None, value))
Чтобы избежать обработки None, я думал использовать условие list(res ('type' in res and res['type'] == 'linux' and res) for res in resources)
, но в неудачных случаях оно дает скорее False. В конце концов, нет никакой разницы в этих двух подходах (None и False).
Есть ли лучший способ, который пропускает None или False в неудачном состоянии и добавляет объекты, только если условие выполнено в списке, в одной строке кода (коротко и четко)?