Exclude 'None' from list comprehension of dicts
MRAB
python at mrabarnett.plus.com
Thu Aug 4 14:50:16 EDT 2022
On 2022-08-04 12:51, Loris Bennett wrote:
> Hi,
>
> I am constructing a list of dictionaries via the following list
> comprehension:
>
> data = [get_job_efficiency_dict(job_id) for job_id in job_ids]
>
> However,
>
> get_job_efficiency_dict(job_id)
>
> uses 'subprocess.Popen' to run an external program and this can fail.
> In this case, the dict should just be omitted from 'data'.
>
> I can have 'get_job_efficiency_dict' return 'None' and then run
>
> filtered_data = list(filter(None, data))
>
> but is there a more elegant way?
>
I'm not sure how elegant it is, but:
data = [result for job_id in job_ids if (result :=
get_job_efficiency_dict(job_id)) is not None]
More information about the Python-list
mailing list