从python列表中选择最高值

时间:2015-09-03 14:57:13

标签: python python-2.7

我的数据格式如下:

[[(0, 0.83094628739162768), (1, 0.084504341129265095), (2, 0.08454937147910728)]
[(0, 0.89691374553960401), (1, 0.050770065151842916), (2, 0.052316189308553113)]
[(0, 0.86427304752389367), (1, 0.068236225898229905), (2, 0.067490726577876414)]
[(0, 0.06737356458000561), (1, 0.86516097670024872), (2, 0.067465458719745686)]]

第一个值(例如,0,1,2)是组名;第二个值(例如,0.865160)是分数。我想找出每个列表中得分最高的组名。所以最终的结果应该是:

0
0
0
1 

2 个答案:

答案 0 :(得分:4)

您可以在一行中解决此问题!

results = [max(collection, key=lambda x: x[1])[0] for collection in data]

我们使用列表推导来处理数据中的每个集合,然后找到具有最大第二个元素的元组。然后我们采用该元组的第一个元素来获取组号。

这里的关键是max的key参数,你可以传递一个任意函数,该函数将应用于序列的元素,结果将用作要比较的值。

答案 1 :(得分:1)

您可以使用max函数查找每个列表中得分最高的索引,例如:

>>> sublist = [(0, 0.83094628739162768), (1, 0.084504341129265095), (2, 0.08454937147910728)]
>>> index = max(sublist, key=lambda tup: tup[1])[0]

然后,您可以使用map将其应用于主列表中的所有子列表:

>>> fn = lambda l : max(l, key=lambda tup: tup[1])[0]
>>> indices = map(fn, main_list)