Python遍历字典列表提取image字段生成新列表的更优实现方法
提取字典列表指定字段的更优实现
你写的显式for循环逻辑完全可用,这类场景下Python有更简洁、执行效率更高的标准写法,优先用列表推导式即可,一行代码就能实现需求:
image_list = [dic['image'] for dic in my_list]
相关说明
- 列表推导式是Python做过底层优化的原生语法,相比手动初始化空列表、循环逐次append的写法,执行速度更快,代码可读性也更高,是这类「从序列里提取固定字段生成新列表」场景的通用写法。
- 如果需要兼容个别字典缺失
image字段的异常场景,避免代码报错,可以在推导式里加过滤逻辑:# 只提取存在image键的字典对应值 image_list = [dic['image'] for dic in my_list if 'image' in dic] - 如果后续你需要做批量矩阵运算,不想保留列表结构、想直接得到拼接好的高维numpy数组,可以在列表推导式基础上直接转numpy数组即可,不需要额外写循环:
import numpy as np # 输出为shape是(n, 图像高, 图像宽, 通道数)的numpy数组,而非数组列表 image_array = np.array([dic['image'] for dic in my_list])
不推荐为了炫技用
map(lambda x: x['image'], my_list)的写法:Python3中map返回的是迭代器,转列表的可读性远差于列表推导式,执行效率也没有优势,实际开发中很少这么写。
内容的提问来源于stack exchange,提问作者Jeff
相关产品推荐
相关产品推荐

