我有一个元组列表,可能如下所示:
[(23, 'somestr'), (30, 'someotherstr'), (15, 'someotherstr2')]
我需要提取具有最小数量的元组,并获取该元组的字符串。为了找到最小值,我刚刚做了:min([i[0] for i in list])
。
怎么会得到字符串?嵌套列表理解?我尝试了几种方法,但我不知道如何保留元组索引,或者在列表理解语句中得到它。
答案 0 :(得分:5)
min(your_list)[1] #would be sufficient
答案 1 :(得分:3)
在这里,您可以直接比较元组。但是,更通用的方法是使用min()
的key
参数:
In [21]: min(l, key=operator.itemgetter(0))[1]
Out[21]: 'someotherstr2'
这里,key=operator.itemgetter(0)
提取元组的第0个元素,并使用结果作为键来决定哪个元组是最小的。
答案 2 :(得分:2)
可以比较元组:
>>> (1, 'hello') < (2, 'bye')
True
比较类似字符串的元组:在找到不相等的对之前成对地考虑元素,然后将具有较小元素的元组视为较小。
因此,您可以简单地获得列表的最小值,并返回具有最低第一个值的元组。然后你可以看看第二个元素中的字符串:
least = min(the_list)
print least[1]
答案 3 :(得分:-1)
python 3.2
1. min(your_list)
2. sorted(your_list)[0]
3. min([(i,v) for i,v in your_list])