0

属性を取得するために、数値のリストで主要な値を選択する方法を探しています。

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

39.73350448334156 を取得するために (18235.00848249135, 39.73350448334156) を抽出したいと考えています。前のリスト (データ) は、空のリスト data=[] から派生しています。データをループに格納するのに最適な形式はリストですか?

4

4 に答える 4

3

あなたはそれを得ることができます:

max(data)[1]

タプルはデフォルトで最初の要素によって比較されるためです。

于 2012-12-10T11:31:49.580 に答える
2

うーん、簡単そうに見えますか?) max(a)[1] ?

于 2012-12-10T11:32:30.360 に答える
2
max(data)[1]

タプルをソートすると、最初の要素に従ってソートされ、次に 2 番目の要素に従ってソートされます。これはmax(data)、最初の要素に従ってソートすることを意味します。

[1]「最大」オブジェクトから 2 番目の要素を返します。

于 2012-12-10T11:31:54.240 に答える
1

実際には、リストの任意の属性で並べ替えることができます。itemgetterを使用できます。並べ替えるもう1つの方法は、明確な比較関数を使用することです(複数レベルのアイテムゲッターが必要な場合は、以下のコードの方が読みやすくなります)。

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 
于 2012-12-10T12:19:07.953 に答える