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中每个⼦元素的第⼆个数进⾏排序。
字符串长度怎么数python这就是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参数的作⽤)。
好了,就介绍到这,希望⼤家有所收获~

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。