这更多是出于好奇而不是任何事情,因为我的工作原理。实现这个目标的“最干净”方法是什么?给定像[(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
可以做得更好吗?
答案 0 :(得分: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)
答案 1 :(得分:1)
Max将比较元组中的第一项,那么如何:
max_val, max_obj = max([(val, obj) for obj, val in tuple_list])
return max_obj, max_val