Python中sort()中key的用法(两个例子)

sort()中key参数: 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序

例1:对学生总成绩(英语+python+c语言)进行排序 (选用来自Python入门到精通的课后习题)

student = [
    {'name': '无语', 'english': 98, 'python': 100, 'c': 96},
    { 'name': '琦琦', 'english': 100, 'python': 96, 'c': 97},
    { 'name': '明日', 'english': 99, 'python': 97, 'c': 95},
    {'name': '田珍', 'english': 93, 'python': 99, 'c': 98}
    ]    #学生信息 用字典定义

def rule(t):
    '''
    指定排序规则
    '''
    return  t.get('english')+t.get('python')+t.get('c')

student.sort(key = rule)
for i in student:
    print(i)

下面是运行结果,可见是将总成绩升序排列。

{'name': '田珍', 'english': 93, 'python': 99, 'c': 98}
{'name': '明日', 'english': 99, 'python': 97, 'c': 95}
{'name': '琦琦', 'english': 100, 'python': 96, 'c': 97}
{'name': '无语', 'english': 98, 'python': 100, 'c': 96}

例2: 对双11打折商品价格进行排列,若价格一致则再按折扣比例进行排列

#product 如: a商品 第一个元素是现价22.5,第二个表原价120
product = [('a',22.5,120),('b',65.1,79.80),('c',23.4,36.0),('d',22.5,128)]
#一般方法 def
def rule(t):
    '''
    定义规则,优先现价t[1],再是折扣t[1]/t[2]进行排序
    '''
    return t[1],t[1]/t[2]  #t[1]是现价 t[1]/t[2]表示折扣力度

product.sort(key = rule)
for each in product:
    print(each)

除了一般定义函数以外,可以用匿名函数lambda方法同样可以实现 代码如下、

#product 如: a商品 第一个元素是现价22.5,第二个表原价120
product = [('a',22.5,120),('b',65.1,79.80),('c',23.4,36.0),('d',22.5,128)]
product.sort(key = lambda x:(x[1],x[1]/x[2])) #优先x[1]排序 再是x[1]/x[2]排序
for each in product:
    print(each)

运行结果为

('d', 22.5, 128)
('a', 22.5, 120)
('c', 23.4, 36.0)
('b', 65.1, 79.8)

综上来看,key更像是对于二维或多维序列排序中,指定要排哪个维度的数,以及指定怎么排的问题。

  • 9
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值