选择列表中的最大值以及与该值相关的属性

时间:2012-12-10 11:30:32

标签: python list optimization coding-style

我正在寻找一种方法来选择数字列表中的主要值,以获得属性。

data
[(14549.020163184512, 58.9615170298556),
 (18235.00848249135, 39.73350448334156),
 (12577.353023695543, 37.6940001866714)]

我希望提取(18235.00848249135,39.73350448334156)以获得39.73350448334156。先前的列表(数据)是从空列表data = []导出的。列表是在循环中存储数据的最佳格式吗?

4 个答案:

答案 0 :(得分:3)

你可以通过以下方式获得:

max(data)[1]

因为默认情况下,元组将通过第一个元素进行比较。

答案 1 :(得分:2)

max(data)[1]

对元组进行排序根据第一个元素排序,然后排序第二个元素。这意味着max(data)根据第一个元素进行排序。

[1]返回“maximal”对象中的第二个元素。

答案 2 :(得分:2)

嗯,这似乎很容易或什么?) max(a)[1]?

答案 3 :(得分:1)

您实际上可以对列表的任何属性进行排序。您可以使用itemgetter。另一种排序方法是使用明确的比较函数(当你可能需要多个itemgetter级别时,下面的代码更易读)。

dist = ((1, {'a':1}), (7, {'a': 99}), (-1, {'a':99}))

def my_cmp(x, y):
    tmp = cmp(x[1][a], y[1][a])
    if tmp==0:
        return (-1 * cmp(x[0], y[0]))
    else: return tmp

sorted = dist.sort(cmp=my_cmp) # sorts first descending on attr "a" of the second item, then sorts ascending on first item