2014-02-22 51 views
2

顯示該子表的另一個值說我有一個列表:挑選最小值出子列表的列表的並具有最小

stuff = [[5,3,8],[2,4,7],[14,5,9]] 

,其中每個子列表的形式[x,y,z]的。

我想找到子列表中第三個條目的最小值,即z=7。然後我想打印出該子列表的第一個值,x

ex)z的最小值出現在x = 2

回答

2

您可以使用內置的min功能與key參數,這樣

stuff = [[5,3,8],[2,4,7],[14,5,9]] 
print min(stuff, key = lambda x: x[2])[0] # 2 

爲了使這個更具可讀性,你可以解開這樣

print min(stuff, key = lambda (x, y, z): z)[0] 

對於每一個元素的值的東西,分配給key參數的功能將被調用。現在,最小值將僅根據該函數返回的值來確定。

+0

優秀的,它的工作原理。謝謝,但你能告訴我什麼key = lambda嗎? –

+0

@BobUnger請檢查答案以獲得簡要說明,並查看我爲'min'提供的文檔鏈接。 :) – thefourtheye

2

您可以通過內置的min功能key訪問的第三個元素中的每個子表:

演示

>>> stuff = [[5,3,8],[2,4,7],[14,5,9]] 
>>> x, y, z = min(stuff, key=lambda arr: arr[2]) 
>>> x, y, z 
(2, 4, 7)