Python中基于指定条件遍历列表与字典的代码精简方案
Python 极简实现方案
Python 原生支持列表/集合/字典推导式,搭配内置函数完全可以实现类似 LINQ、lambda 表达式的简洁写法,不需要编写大量显式循环。
针对你的需求,最精简的实现如下:
# 提前转集合优化查询效率,values 元素少可以省略这步 value_set = set(input_object.values) # 一行实现条件判断、遍历筛选、去重 saved_names = list({v for k, v in my_object.codes.items() if int(k) in value_set} if input_object.id == my_object.name else [])
如果你需要保留匹配到的元素原有顺序(Python 3.7+ 支持),可以用字典键来去重,避免集合打乱顺序:
value_set = set(input_object.values) saved_names = list(dict.fromkeys(v for k, v in my_object.codes.items() if int(k) in value_set)) if input_object.id == my_object.name else []
如果你偏好类似 LINQ 的链式函数写法,也可以用map、filter组合实现:
value_set = set(input_object.values) saved_names = [] if input_object.id == my_object.name: # 链式调用:筛选符合条件的键值对 → 提取值 → 去重 → 转列表 saved_names = list(set(map(lambda x: x[1], filter(lambda item: int(item[0]) in value_set, my_object.codes.items()))))
内容的提问来源于stack exchange,提问作者cdub
相关产品推荐
相关产品推荐

