python lambda函数两个列表大小关系_python学习 -- operator.itemgetter(), list.sort/sorted 以及lambda函数...

Python 中有非常方便高效的排序函数,下面主要介绍如何sort/sorted对list,dict进行排序。

1. 用list.sort /sorted 对list of tuples中第二个值进行排序

>>> import operator

>>> a=[(‘a‘,3),(‘b‘,2),(‘c‘,1)]

>>> import operator

>>> l=[(‘a‘,3),(‘b‘,2),(‘c‘,1)]

>>> l.sort(key=operator.itemgetter(1))

>>> l

[(‘c‘, 1), (‘b‘, 2), (‘a‘, 3)]

>>> sorted(l, key=operator.itemgetter(1))

[(‘c‘, 1), (‘b‘, 2), (‘a‘, 3)]

>>> sorted(l, key=operator.itemgetter(0))

[(‘a‘, 3), (‘b‘, 2), (‘c‘, 1)]

list.sort 和sorted 的区别:sort是list序列的一个方法,而sorted是内建函数

list.sort: 没有返回值,而且 sort作为序列的内部函数,调用完后会对调用的序列进行排序

sorted:函数不改变参数,并返回排好序的序列副本

在python开发文档中对sort和sorted都有详细介绍,也可以调用help函数来查看两者的区别

>>>help(list.sort)

Help on method_descriptor:

sort(...)

L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*

>>>help(sorted)

Help on built-in function sorted inmodule builtins:

sorted(iterable,/, *, key=None, reverse=False)

Return a new list containing all itemsfrom the iterable inascending order.

A custom key function can be supplied to customize the sort order,andthe

reverse flag can be set to request the resultin descending order.

2. 除了用operator之外我们也可以用lambda

>>> l.sort(key=lambda x:x[1])>>>l

[(‘c‘, 1), (‘b‘, 2), (‘a‘, 3)]

3. 用sorted来对ditionary进行排序

>>> l = {‘a‘: 3,"b": 2,"c": 1}

>>> sl_key = sorted(l.items()) #Sort by key

>>> sl_key

[(‘a‘, 3), (‘b‘, 2), (‘c‘, 1)]

>>> sl_value = sorted(l.items(),key=lambda x:x[1]) #Sort by value

>>> sl_value

[(‘c‘, 1), (‘b‘, 2), (‘a‘, 3)]

>>> sl_value = sorted(l.items(),key=lambda x:x[1],

reverse=True) #Sort by value Backwards

>>> sl_value

[(‘a‘, 3), (‘b‘, 2), (‘c‘, 1)]

>>> sl_value = sorted(l.items(),key=lambda x:(x[1],x[0]),

reverse=True) #Sort by value then by Key

>>> sl_value

[(‘a‘, 3), (‘b‘, 2), (‘c‘, 1)]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值