我有一个元组列表,看起来像这样:

[('abc', 121),('abc', 231),('abc', 148), ('abc',221)]

我想按元组内的整数值升序对这个列表排序。这可能吗?


当前回答

对于Python 2.7+,这可以使接受的答案更具可读性:

sorted([('abc', 121),('abc', 231),('abc', 148), ('abc',221)], key=lambda (k, val): val)

其他回答

对于避免lambda的方法,首先定义自己的函数:

def MyFn(a):
    return a[1]

然后:

sorted([('abc', 121),('abc', 231),('abc', 148), ('abc',221)], key=MyFn)

对于就地排序,使用

foo = [(list of tuples)]
foo.sort(key=lambda x:x[0]) #To sort by first element of the tuple

对于Python 2.7+,这可以使接受的答案更具可读性:

sorted([('abc', 121),('abc', 231),('abc', 148), ('abc',221)], key=lambda (k, val): val)

在奇肯的回答中, 这就是按第二项降序排序元组列表的方法。

sorted([('abc', 121),('abc', 231),('abc', 148), ('abc',221)],key=lambda x: x[1], reverse=True)

作为一个python新手,我只是想提一下,如果数据确实是这样的:

data = [('abc', 121),('abc', 231),('abc', 148), ('abc',221)]

然后sorted()会自动按照元组中的第二个元素排序,因为第一个元素都是相同的。