看起来你对这些东西有点困惑。
运算符是一个内置的模块,提供一组方便的运算符。在两个字中,operator.itemgetter(n)构造一个可调用的,它将可迭代的对象(list,tuple,set)作为输入,从中提取第n个元素。
所以,你不能使用key = a [x] [1],因为python不知道x是什么。相反,你可以使用一个lambda函数(elem只是一个变量名,没有魔法):
a.sort(key=lambda elem: elem[1])
或只是一个普通的功能:
def get_second_elem(iterable):
return iterable[1]
a.sort(key=get_second_elem)
所以,这里有一个重要的注意事项:在python函数中是first-class citizens,所以你可以将它们作为参数传递给其他函数。
其他问题:
>是的,你可以反转排序,只需添加reverse = True:a.sort(key = …,reverse = True)
要排序多列,可以使用具有多个索引的itemgetter:operator.itemgetter(1,2)或lambda:lambda elem:(elem [1],elem [2])。这样,对于列表中的每个项目,迭代元素都是按照字典(?)顺序(第一个元素比较,如果相等的第二个元素比较等)比较而构建的,
>您可以使用[2,1](索引为零为基础)在[3,2]处获取值。使用运算符…这是可能的,但不像索引一样干净。
有关详细信息,请参阅文档: