# 按第二项（整数值）对元组列表进行排序

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

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

`key`应该是一个函数，用于标识如何从数据结构中检索可比较的元素。 在你的情况下，它是元组的第二个元素，所以我们访问`[1]`

` `>>> from operator import itemgetter >>> data = [('abc', 121),('abc', 231),('abc', 148), ('abc',221)] >>> sorted(data,key=itemgetter(1)) [('abc', 121), ('abc', 148), ('abc', 221), ('abc', 231)]` `

` `>python -m timeit -s "from operator import itemgetter; data = [('abc', 121),('abc', 231),('abc', 148), ('abc',221)]" "sorted(data,key=itemgetter(1))" 1000000 loops, best of 3: 1.22 usec per loop >python -m timeit -s "data = [('abc', 121),('abc', 231),('abc', 148), ('abc',221)]" "sorted(data,key=lambda x: x[1])" 1000000 loops, best of 3: 1.4 usec per loop` `

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

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

` `>>> from operator import itemgetter, attrgetter >>> sorted(student_tuples, key=itemgetter(2)) [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] >>> sorted(student_objects, key=attrgetter('age')) [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]` `

` `def MyFn(a): return a[1]` `

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

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

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

OP中的排序值是整数的事实与问题本身无关。 换句话说，如果排序值是文本，则接受的答案将起作用。 我提出这个问题也指出，在排序过程中可以修改排序（例如，考虑大小写）。

` `>>> sorted([(121, 'abc'), (231, 'def'), (148, 'ABC'), (221, 'DEF')], key=lambda x: x[1]) [(148, 'ABC'), (221, 'DEF'), (121, 'abc'), (231, 'def')] >>> sorted([(121, 'abc'), (231, 'def'), (148, 'ABC'), (221, 'DEF')], key=lambda x: str.lower(x[1])) [(121, 'abc'), (148, 'ABC'), (231, 'def'), (221, 'DEF')]` `