2016-11-07 78 views
1

我想通過這樣的元組的列表進行迭代:從座標元組的列表中選擇最小值

[(0, 0.0083553666846612491), (1, 0.0054999681509501821)] 

並找到元組的右手側的最小值,然後保存隨附左手邊的值給一個變量。

這個問題最好的解決方法是什麼?

回答

2

可以使用key參數來min()功能找到具有最小第二值的元組:

>>> l = [(0, 0.0083553666846612491), (1, 0.0054999681509501821)] 
>>> smallest = min(l, key=lambda x: x[1])[0] 
>>> smallest 
1 

這裏lambda表達式用來選擇每個元組的第二個項目,並min使用該值在其比較中。 min()返回完整元組,因此您可以使用[0]提取第一個項目。

您還可以使用operator.itemgetter

>>> from operator import itemgetter 
>>> smallest = min(l, key=itemgetter(1))[0] 
>>> smallest 
1 
0

這應該工作:

min_tuple = min(your_list, key=lambda item: item[1]) 

所以我們提供的元組特點比較方法

+0

你就像只遲到3分鐘。通常情況下,我會upvote這兩個答案,但[mhawke](http://stackoverflow.com/a/40456054/1218980)提供了更多的細節,而你沒有提供。非常鼓勵您提供您所提議的解決方案的描述,而不僅僅是單線程。 –

+1

我正在使用手機應用程序,每個字母都是數字(誰喜歡在手機上寫散文)。感謝您的建議。 – woockashek

+0

是的,在手機上寫答案遠不是最好的。 –

相關問題