この場合、numpy配列がどのように役立つかわかりません。
特に、データ構造を別のものに変換すると(numpy配列またはheapqのタプルのリスト)、各タプルに対して反復する最大値を見つけるよりもはるかに遅くなります。これは、データ構造を変換する際にも、元の構造を繰り返し処理し、新しい構造体のオブジェクトをインスタンス化し、その値を新しい構造体に格納し、新しい構造体を使用して要求された値を取得する必要があるからです。
リストの組み込みの関数またはメソッドを使用すると、おそらくより高速な計算が行われます。私は考えることができる最も些細な実装:
>>> li = [('a', 10), ('b', 30), ('c', 20)]
>>> max(li, key=lambda e : e[1])[0]
'b'
他の可能なもの、あなたが最低値のようにもものに興味があるか、あなたが見つかった値がソートを通過することができ、リストを飛び出した場合(あなたが元のリストを調べます一度だけ):!
>>> li = [('a', 10), ('b', 30), ('c', 20)]
>>> li.sort(key=lambda e : e[1])
>>> li
[('a', 10), ('c', 20), ('b', 30)]
>>> li[-1][0]
'b'
または:
>>> sorted(li, key=lambda e: e[1])[-1][0]
'b'
HTH!
出典
2012-01-01 13:17:18
mac
タプルは1つの構造体に格納する必要がありますか?最大アイテムが複数必要な場合は、「heapq」http://docs.python.org/library/heapq.htmlを使用できます。どのような問題を解決しているのですか?この部分が問題の原因であると確信していますか? –
タプルを構造体に格納する必要があります。私はちょうど最大の数値と対応する 'キー'を見つけたいと思っています。 – Dexter