在lambda函数lambda tup: tup[1]中,tup指的是列表data的元素,tup[1]指的是item的第二个元素。
当你将它传递给sorted 函数时,你告诉它使用列表中项目的第二个元素作为比较键,所以你得到的结果是第二个元素上的排序列表
来自文档
key 指定一个参数的函数,用于从可迭代的每个元素中提取比较键(例如,key=str.lower)。默认值为None(直接比较元素)。
因此行为如下
In [54]: data = [[4,5,6], [1,2,3], [7,8,9]]
In [55]: sorted_by_second = sorted(data, key=lambda tup: tup[1])
In [56]: sorted_by_second
Out[56]: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
请注意,您也可以使用operator.itemgetter 来做同样的事情,它会自动从元组中挑选第二个元素
In [60]: import operator
In [64]: data = [[4,5,6], [1,2,3], [7,8,9]]
In [65]: sorted_by_second = sorted(data, key=operator.itemgetter(1))
In [66]: sorted_by_second
Out[66]: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]