python中sort函数用法_python中sort()函数的key参数用法(转载)

今天在学习匿名函数lambda的时候遇到了一个没怎么想明白的问题。

strings = ['foo', 'card', 'bar', 'aaaa', 'abab']

# 根据字符串中不同字母的数量对一个字符串集合进行排序

strings.sort(key=lambda x: len(set(list(x))))

上面strings输出的结果为:[‘aaaa’, ‘foo’, ‘abab’, ‘bar’, ‘card’]

结果是明白的,但是过程一开始没弄清楚。

后来百度了一下,参考了别人的解析才弄明白。

主要是了解sort()函数中参数key的意思:

传递给key参数的是一个函数,它指定可迭代对象中的每一个元素来按照该函数进行排序

举个例子:

# 这里先看一个不带key参数的sort()函数,大家很容易知道结果

li = [[1, 7], [1, 5], [2, 4], [1, 1]]

li.sort()

print(li)

# [[1, 1], [1, 5], [1, 7], [2, 4]] 默认按照0维排序 再按照1维排序

def fun(li):

return li[1]

# 这时将函数fun传递给参数key 得出结果

li.sort(key=fun)

print(li) # [[1, 1], [2, 4], [1, 5], [1, 7]]

我们可以发现好像是li中每个子元素的第二个数进行排序。

这就是key参数的作用,传入了key参数的sort()函数对li中的每个子元素[1,7],[1,5],[2,4],[1,1]都执行了fun()函数,返回它们的第1个数,分别为7,5,4,1。然后再排序得到1,4,5,7。使的出的结果对本来的li进行排序最后就得到了[[1,1],[2,4],[1,5],[1,7]]。

上述用lambda可以表示为:li.sort(key=lambda li: li[1]),这里的后面两个li是变量名,可以随意取如li.sort(key=lambda x: x[1])

最后我们再来解释一下这句:

# 根据字符串中不同字母的数量对一个字符串集合进行排序

strings.sort(key=lambda x: len(set(list(x))))

按照字符串不同字母的数量对一个字符串集合进行排序,字符串不同字母的数量,可以想到利用set集合的不重复性,于是想到利用len函数求出set集合的长度,再按照长度进行排序即可。这里赋值给x的就是strings中的每一个元素(key参数的作用)。

好了,就介绍到这,希望大家有所收获~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值