编写按条件返回单一元素的函数,实现基于最低时间匹配对应姓名功能
function_2 实现方案
核心思路
利用已经实现的function_1计算每个name对应的时间,比对后返回时间最小的name即可。
实现代码
基础写法(可读性高,方便加自定义逻辑)
def function_2(number, data): # 初始化最小时间为无穷大,目标name为空 min_time = float('inf') target_name = None # 遍历所有待比对的name,默认name为data字典的顶层键 for name in data: current_time = function_1(name, number, data) # 匹配到更小时间就更新记录 if current_time < min_time: min_time = current_time target_name = name return target_name
简洁写法(基于内置min函数)
直接用min的key参数指定比对规则,代码更精简:
def function_2(number, data): if not data: # 处理空输入场景,可根据需求调整返回值或抛出异常 return None return min(data.keys(), key=lambda name: function_1(name, number, data))
注意事项
- 上述代码默认
data的顶层键就是所有需要参与比对的name值,如果你的data中name存储在其他层级,调整遍历的数据源即可。 - 如果多个name对应相同的最小时间,代码会返回字典遍历顺序中第一个出现的name,Python3.7及以上版本字典默认保留插入顺序,低版本可自行调整排序逻辑。
- 可以根据业务需要添加异常捕获逻辑,比如处理
function_1计算报错的场景。
内容的提问来源于stack exchange,提问作者Pytank
相关产品推荐
相关产品推荐

