元组python中的最大第二个元素

Mik*_*Hoy 3 python tuples list

可能重复:
按嵌套列表中的第二个元素排序或查找最大值.蟒蛇

我写了一个程序,给我一个元组列表.我需要使用第二个值中的最大数字来获取元组.

    (840, 32), (841, 3), (842, 4), (843, 4), (844, 6), (845, 6), (846, 12), (847, 6), (848, 10), (849, 4), ..snip...
Run Code Online (Sandbox Code Playgroud)

我需要回来(840,32),因为32是元组中最高的第二个数字.我怎样才能做到这一点?我尝试过各种各样的方法,但是这里一直存在的是完整的代码:

    D = {}
    def divisor(n):
        global D
        L = []
        for i in range(1,n+1):
        if n % i == 0:
            L.append(i)
            D[n] = len(L)

    for j in range(1001):
        divisor(j)


    print(D.items())
Run Code Online (Sandbox Code Playgroud)

Ash*_*ary 28

使用max()lambda:

In [22]: lis=[(840, 32), (841, 3), (842, 4), (843, 4), (844, 6), (845, 6), (846, 12), (847, 6), (848, 10), (849, 4)]

In [23]: max(lis, key=lambda x:x[1])
Out[23]: (840, 32)
Run Code Online (Sandbox Code Playgroud)

或者operator.itemgetter:

In [24]: import operator 

In [25]: max(lis, key=operator.itemgetter(1))
Out[25]: (840, 32)
Run Code Online (Sandbox Code Playgroud)

  • 请注意,对于这种键函数,operator.itemgetter优先于lambda (6认同)