如何用Python按ID列表过滤对象列表并提取指定字段?
Pythonic方式筛选对象并提取字段值
输入数据
my_objects = [ { "id":0, "some_value":"a" }, { "id":1, "some_value":"a" }, { "id":2, "some_value":"b" }, { "id":3, "some_value":"b" }, ] ids = [1, 2]
1. 筛选包含目标ID的对象列表
使用列表推导式即可完成筛选。为了提升ID查找效率(尤其当ids列表较大时),建议先将ids转换为集合:
id_set = set(ids) my_objects_filtered = [obj for obj in my_objects if obj["id"] in id_set]
执行后得到的my_objects_filtered就是符合要求的对象列表:
[ { "id":1, "some_value":"a" }, { "id":2, "some_value":"b" } ]
2. 提取some_value字段值
有两种实现方式:
- 基于筛选后的列表提取:如果需要保留筛选后的对象列表,可在此基础上再做一次推导:
result = [obj["some_value"] for obj in my_objects_filtered] - 一步完成筛选+提取:如果不需要保留中间的对象列表,直接合并两步操作更高效:
id_set = set(ids) result = [obj["some_value"] for obj in my_objects if obj["id"] in id_set]
两种方式最终都会得到结果:["a", "b"]
内容的提问来源于stack exchange,提问作者Ipsider
相关产品推荐
相关产品推荐

