如何使用max()方法从嵌套列表中提取最大价格
如何用max()方法从嵌套列表中提取最大价格?
我懂你想把原来的循环代码简化,直接用max()方法拿到嵌套列表里的最大价格对吧?核心就是要告诉max()函数只关注每个子元素的第二个值,这时候就得用到max()的key参数啦。
先看你原来的循环写法,逻辑是完全没问题的:
maxPrice = 0 for item in cont["price_usd"]: if(item[1] > maxPrice): maxPrice = (item[1]) print(maxPrice)
用max()简化的话,只需要给它指定一个比较的“规则”——用lambda表达式作为key,告诉函数以每个子列表的第二个元素作为比较依据:
一行搞定的简洁写法
max_price = max(cont["price_usd"], key=lambda x: x[1])[1] print(max_price)
分步拆解更易懂
如果觉得一行代码有点绕,可以拆成两步看,逻辑更清晰:
# 先拿到包含最高价格的完整子列表 max_item = max(cont["price_usd"], key=lambda item: item[1]) # 再从这个子列表里提取价格(也就是第二个元素) max_price = max_item[1] print(max_price)
为什么你之前的写法不生效?
你之前直接写max(list)的话,Python默认会按子列表的第一个元素(也就是amount_coins)来做比较,只有当第一个元素相等时才会去看第二个元素,这完全不符合你要找最大价格的需求,所以必须通过key参数明确指定比较的依据。
内容的提问来源于stack exchange,提问作者j.doe
相关产品推荐
相关产品推荐

