1

私が持っているものは機能するので、これは何よりも好奇心からです。これを実装する「最もクリーンな」方法は何ですか? so のようなペアタプルのリストが与えられた場合[(Object, int), (Object1, int1), ... ]、最大の int を見つけ、その値に関連付けられた int とオブジェクトを返します。

私は次のように「簡単な方法」を実行しました:

bestObject, bestVal = None, 0
for i in range(len(tuple_list)):
    obj, val = tuple_list[i]
    if val > bestVal:
        bestObject, bestVal = obj, val
return bestObject, bestValue

もっとうまくできるでしょうか?

4

2 に答える 2

4

このmax関数は、key比較で使用するものを正確に指定できるパラメーターを提供します。例えば:

In [1]: class MyObject(object):
   ...:     def __init__(self, a):
   ...:         self.a = a
   ...:         

In [2]: a = MyObject('something')

In [3]: b = MyObject('something else')

In [4]: c = MyObject('another thing??')

In [5]: tups = [(a, 1), (b, 5), (c, 2)]

In [6]: max(tups, key=lambda x: x[1])
Out[6]: (<__main__.MyObject at 0x26c17d0>, 5)
于 2013-02-14T18:03:58.977 に答える
1

Max はタプルの最初の項目を比較します。

max_val, max_obj = max([(val, obj) for obj, val in tuple_list])
return max_obj, max_val
于 2013-02-14T18:06:11.187 に答える