2017-01-22 9 views
3

インデックスの最小値を持つタプルが必要なタプルのリストを取得しています。私のリストは以下のようであれば、例えば:要素の最小値を持つタプルのリストからタプルを抽出するエレガントな方法

a =[('a', 2), ('ee', 3), ('mm', 4), ('x', 1)] 

私は返さタプルが('x', 1)になりたいです。現在、私は次のように、この結果を得るためにsorted機能を使用しています

min=sorted(a, key=lambda t: t[1])[0] 

はそれを行うにはそこより良い方法ですか?たぶんminの機能は?

+0

を。 –

答えて

7

keyパラメータでmin()関数を使用して、リスト内の最小値を持つタプルを見つけることができます。リストをソートする必要はありません。代わりにラムダ式operator.itemgetter()を使用する

>>> min(a, key=lambda t: t[1]) 
('x', 1) 

さらに良い;:したがって、あなたのminコールは次のようにする必要がありますitemgetterは比較的高速です。

>>> from operator import itemgetter 

>>> min(a, key=itemgetter(1)) 
('x', 1) 

注:min()はPythonで、内蔵の機能である。この場合、min関数の呼び出しは次のようにする必要があります。変数名として使用するべきではありません。

1

また、これは動作します:良い解決策だ

min([x[::-1] for x in a])[::-1] 
# ('x', 1) 
関連する問題