如何用Lookup或HashMap替代Python代码中的if-else分支逻辑
用Lookup/HashMap替代区间判断的if-else分支
因为你要处理的是区间范围匹配,普通键值对字典无法直接对应,我们可以通过有序区间映射的方式实现需求,以下是两种可行方案:
方案一:基础有序区间遍历
把每个区间的上限和对应评分关联起来,按区间从小到大排序后遍历匹配,逻辑和原if-else完全一致:
# 定义区间上限与对应评分的映射列表(按区间从小到大排序) time_rating_map = [ (60, 10), (120, 8.34), (180, 6.68), (240, 5.02), (300, 3.36), ] # 替换成你的实际min变量值 min_value = 90 # 默认评分对应原else分支 rating = 1.7 for upper_limit, score in time_rating_map: if min_value <= upper_limit: rating = score break print(f'The rating for time is {rating}')
方案二:bisect模块优化查找(适合大量区间场景)
利用二分查找快速定位区间,时间复杂度为O(log n),效率更高:
import bisect # 提取区间上限列表和对应评分列表(需保持顺序一致) upper_limits = [60, 120, 180, 240, 300] ratings = [10, 8.34, 6.68, 5.02, 3.36] # 替换成你的实际min变量值 min_value = 250 # 用bisect_right找到区间索引 index = bisect.bisect_right(upper_limits, min_value) if index < len(ratings): rating = ratings[index] else: rating = 1.7 print(f'The rating for time is {rating}')
内容的提问来源于stack exchange,提问作者Akash
相关产品推荐
相关产品推荐

