0

タプルのリストがあります。これは次のようになります。

[(23, 'somestr'), (30, 'someotherstr'), (15, 'someotherstr2')]

最小数のタプルを抽出し、そのタプルの文字列を取得する必要があります。最小値を見つけるために、私はちょうどしました:min([i[0] for i in list])

しかし、どのように文字列を取得しますか?ネストされたリスト内包?私はいくつかの方法を試しましたが、タプルのインデックスを保持する方法、またはリスト内包表記で取得する方法がわかりません。

4

4 に答える 4

5
min(your_list)[1] #would be sufficient
于 2012-12-15T17:40:07.690 に答える
3

ここでは、タプルを直接比較できます。ただし、より一般的なアプローチは、次のkey引数を使用することmin()です。

In [21]: min(l, key=operator.itemgetter(0))[1]
Out[21]: 'someotherstr2'

ここでkey=operator.itemgetter(0)は、タプルの0番目の要素を抽出し、その結果をキーとして使用して、どのタプルが最小であるかを決定します。

于 2012-12-15T17:40:42.700 に答える
2

タプルを比較できます:

>>> (1, 'hello') < (2, 'bye')
True

タプルは文字列のように比較されます。等しくないペアが見つかるまで要素をペアごとに検討します。その後、要素が小さいタプルは小さいと見なされます。

したがって、リストの最小値を取得するだけで、最初の値が最も小さいタプルが返されます。次に、2番目の要素の文字列を確認できます。

least = min(the_list)
print least[1]
于 2012-12-15T17:43:26.027 に答える
-1
    python 3.2

    1. min(your_list)

    2. sorted(your_list)[0]

    3. min([(i,v) for i,v in your_list])
于 2012-12-15T17:55:20.057 に答える