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)提取元组的第零个元素,并使用结果作为键来决定哪个元组是最小的。

于 2012-12-15T17:40:42.700 回答
2

可以比较元组:

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

元组的比较有点像字符串:成对考虑元素,直到找到不相等的对,然后元素较小的元组被认为较小。

所以你可以简单地获取列表的最小值,返回第一个值最小的元组。然后可以查看第二个元素中的字符串:

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 回答