比较下面列表中的最大rps
lst = lst = [
{'service': 'homepage-biz-custom', 'rps': '41.11', 'average_response_time': '3.0'},
{'service': 'homepage-biz-custom', 'rps': '71.45', 'average_response_time': '2.0'},
{'service': 'homepage-biz-custom', 'rps': '102.23', 'average_response_time': '2.5'}
]
期望结果:
{'service': 'homepage-biz-custom', 'rps': '102.23', 'average_response_time': '2.5'}
实现代码1 – 传统做法
vmax = {'rps':'0'}
for one in lst:
if float(one["rps"]) >= float(vmax['rps']):
vmax = one
print(vmax)
实现代码2 – max()函数+lambda表达式
max_ret = max(lst, key=lambda dic: float(dic['rps']))
print(max_ret)
详解与分析
1) 先取{'service': 'homepage-biz-custom', 'rps': '41.11', 'average_response_time': '3.0'},以{'service': 'homepage-biz-custom', 'rps': '41.11', 'average_response_time': '3.0'}为参传入匿名函数作为dic,经dic['rps']处理得41.11。
2) 再取{'service': 'homepage-biz-custom', 'rps': '71.45', 'average_response_time': '2.0'},以{'service': 'homepage-biz-custom', 'rps': '71.45', 'average_response_time': '2.0'}为参传入匿名函数作为dic,经dic['price']处理得71.45。
3) 最后取 {'service': 'homepage-biz-custom', 'rps': '102.23', 'average_response_time': '2.5'},以 {'service': 'homepage-biz-custom', 'rps': '102.23', 'average_response_time': '2.5'}为参传入匿名函数作为dic,经dic['price']处理得102.23。
4) 集中比较41.11,71.45,102.23, 得102.23最大,返回102.23对应的参数dic,即 {'service': 'homepage-biz-custom', 'rps': '102.23', 'average_response_time': '2.5'}。
5) 因为返回是字典,所以可能乱序。
不论匿名函数怎么处理参数,返回的不是处理后的结果,而是结果对应的参数本身,即dic