我有一个列表列表,我应该找到第二个元素有最大值的子列表。
我按如下方式实现了它,但我认为它有点“次优”:-)

def max_value(inputlist):
    return max([sublist[-1] for sublist in inputlist])

然后
maxvalue = max_value(listofcounties)
for result in listofcounties:
    if result[1] == maxvalue:
        return result[0]

有一种方法可以更精确地实现这一点吗?
非常感谢你的任何暗示!
拜伊
法维奥

最佳答案

max接受一个可选的key参数;max比较key函数的返回值以确定哪个值更大。

maxvalue = max(listofcounties, key=lambda x: x[-1])

>>> listofcounties = [['county1', 10], ['county2', 20], ['county3', 5]]
>>> max(listofcounties, key=lambda x: x[-1])  # by using `key`, max compares 10, 20, 5
['county2', 20]

08-25 03:12