2015-05-29 52 views
0

我有一個元組列表(列表):發現的元組的Python列表最大值

('2015-06-19', 3453455, 5, 'Scheduled') 
('2015-05-19', 6786788, 6, 'Overdue') 
('2015-04-19', 2342344, 2, 'Not Received') 
('2015-03-19', 9438549, 0, 'Not Received') 
('2015-02-19', 6348759, 7, 'Not Received') 

當我運行它,我得到這個:

>>> print(max(list)) 
('2015-06-19', 3453455, 5, 'Scheduled') 

顯然,MAX(名單)根據元組列表中的第一個值確定最大值。我只是想知道這是否是max(list)關於元組列表的默認行爲;只檢查元組中的第一項?

而且,如果我想返回基於第二項/列的最大值的元組怎麼辦。我會怎麼做?

+2

看到這個:http://stackoverflow.com/questions/5292303/python-元組比較 –

+0

如果任何元組的第一個值匹配,它將檢查後續值。 – ZdaR

+0

如果你喜歡,你可以改變這種行爲:'max(tup_list,key = lambda x:x [1])' – IanAuld

回答

5

您可以指定使用lambda表達式

max(list,key=lambda x:x[1]) 

或交替使用比較哪個字段,用itemgetter

from operator import itemgetter 
max(list,key=itemgetter(1)) 
+0

完美!謝謝! –

+0

偉大的答案,我總是喜歡'itemgetter'這是更快 – jamylak