2012-10-23 22 views
1

可能重复:
Sorting or Finding Max Value by the second element in a nested list. Python最大二次元

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

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

我需要找回(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()) 

回答

20

使用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) 

operator.itemgetter

In [24]: import operator 

In [25]: max(lis, key=operator.itemgetter(1)) 
Out[25]: (840, 32) 
+0

感谢您的帮助!这解决了它。 –

+6

请注意,operator.itemgetter比lambda更喜欢这种键功能 – iruvar

+0

@cravoori完全同意,我总是忘记使用它(因为lambda是直接的,不需要导入任何库) –