1

这更多是出于好奇,因为我所拥有的东西是有效的。实现这一点的“最干净”的方法是什么?给定一个像这样的对元组列表[(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 回答