2017-10-26 11 views
1

私は複数のパラレルオブジェクトリストを含むリストを持っています。リストの1つのインデックス(この場合は[5])の最大値を探したいと思います。リストの最大値を求めて別のリスト値を返すpython

最大値を取得したら、どのように発生してそのリストの最初の要素が返されますか?例えば

inputlist = [[70, 'Cherry St,', 43.684371, -79.316756, 23, 9, 14, True, True], [78, 'Cow Rd', 43.683378, -79.322961, 15, 13, 2, True, False]]

は、どのように私はそれがリストの私のリストに[5]インデックスの最大値が含まれているとして、私の関数は78を返すために得ることができますか?

+0

なぜ「70」ですか?あなたは '13'を意味しないのですか?それぞれのサブリストの 'L [5] 'の2つの値のため、13> 9 – TerryA

+0

となりました。78を意味します。各サブリストの最初の2つの要素は、私が探しているIDを表します。 – Jamie

+0

私は自分の答えを編集しました – TerryA

答えて

0

max()機能を使用しますが、特定のインデックスをチェックするための引数を通過:

max(inputList, key=lambda x: x[5]) 

これは、あなたが実際にこの値にアクセスしたい場合は、インデックス5で最大値を持つinputListでサブリストを返します。ステートメントの最後に[5]を追加します。

それが最大の5番目の要素には、リストのIDを欲しいと思われますので、最後まで[0]を追加します。

max(inputList, key=lambda x: x[5])[0] 
+0

'lambda'の代わりに' itemgetter'を提案することができますhttps://stackoverflow.com/questions/17243620/operator-itemgetter-or-lambda、中小のリストの違いはありません。 – Rockybilly

+0

key = lambdaを使用せずにこれを繰り返す別の方法はありますか? – Jamie

+0

@Jamie forループを手動で使用し、 'max()'関数を使わずに最大値を見つけることはできますが、Pythonの考え方 – TerryA

0

これは二回

inputlist = [[70, 'Cherry St,', 43.684371, -79.316756, 23, 9, 14, True, True], 
[78, 'Cow Rd', 43.683378, -79.322961, 15, 13, 2, True, False]] 
リストの内包表記を使用して、あなたが何ができるかであります

入力リストのすべてのリストを考慮して、5番目のインデックスの最大値。これはメンバーリストの任意の(n)いいえに使用できます。

value_5th = max([listt[5] for listt in inputlist]) 

あなたがその時に達すると:

これはあなたに持っているメンバーリストの最初の要素を与えるだろうが、他のすべてのメンバーのlist.Plzの中で5番目のインデックスで/最大の要素の最大は、この意志があることに注意していること複数のメンバーリストがあなたに上記のより堅牢なsolution.AlthoughのANSを与えるしようとしている彼らの第5回インデックス

Your_ans = [ listt[0] for listt in inputlist if value_5th in listt] 

で同じ最大の要素を持っていても動作することは私の見解では非常に賢いです。

関連する問題