python中itemgetter_如何在Python中运行operator.itemgetter和sort()?

看起来你对这些东西有点困惑。

运算符是一个内置的模块,提供一组方便的运算符。在两个字中,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]处获取值。使用运算符…这是可能的,但不像索引一样干净。

有关详细信息,请参阅文档:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值