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参数的作用)。
好了,就介绍到这,希望大家有所收获~

  • 71
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: Pythonsort函数key参数可以用来指定一个函数,该函数将作为排序的关键字。sort函数将会根据该函数的返回值对列表进行排序。 例如,如果我们有一个列表,其包含多个字符串,我们可以使用key参数来按照字符串的长度对列表进行排序。我们可以定义一个函数,该函数将返回字符串的长度,然后将该函数作为key参数传递给sort函数。 示例代码如下: ``` my_list = ['apple', 'banana', 'orange', 'pear'] my_list.sort(key=len) print(my_list) ``` 输出结果为: ``` ['pear', 'apple', 'banana', 'orange'] ``` 在这个例子,我们使用了len函数作为key参数,该函数返回字符串的长度。sort函数将根据字符串的长度对列表进行排序,从而得到了上述的输出结果。 ### 回答2: Pythonsort函数是一种常见的排序算法,用于按升序或降序排列列表或元组的元素。sort()方法通常接受两个可选参数,即 reverse 和 keyKey参数定义了排序规则。它是一个函数对象,用于指定用于排序的元素。例如,在列表,可以使用key来排序字符串,数字和列表。下面是一些示例。 1. 按字符串长度排序: ``` my_list = ['python', 'is', 'an', 'awesome', 'language'] my_list.sort(key=len) print(my_list) # ['is', 'an', 'python', 'awesome', 'language'] ``` 2. 按数字大小排序: ``` my_list = [10, 23, 1, 3, 4, 22] my_list.sort(key=int) print(my_list) # [1, 3, 4, 10, 22, 23] ``` 3. 按列表某个元素排序: ``` my_list = [(3, 'John'), (1, 'Dan'), (2, 'Alex')] my_list.sort(key=lambda x: x[1]) print(my_list) # [(2, 'Alex'), (1, 'Dan'), (3, 'John')] ``` 在第三个示例,我们使用了匿名函数(lambda)来返回元组的第二个元素(x[1]),以排序列表。 总之,key参数使我们能够使用自定义函数对列表进行排序,从而根据需要对其进行定制排序。当使用key排序时,sort函数首先调用key函数,然后根据返回的值对元素进行排序。这种排序方法是一种更加灵活的排序方式,可应用于不同类型的数据。 ### 回答3: 在Pythonsort函数用于对列表进行排序,可以根据元素的大小,或者元素的某个属性来对列表进行排序。其key参数用于指定一个函数函数的返回值将用来进行排序。下面我们来详细讲解一下sort函数key参数的应用。 从简单的例子开始,假设我们要对一个字符串列表按照字符串长度进行排序,可以这么做: ```python lst = ['AAA', 'BB', 'CCCCC', 'D'] lst.sort(key=len) print(lst) # 输出:['D', 'BB', 'AAA', 'CCCCC'] ``` 在这里,我们传递了一个函数len作为key参数,它将返回每个元素的字符串长度作为排序依据。 同样的,如果列表的元素是一个元组,我们可以使用元组的某个元素作为排序依据,例如: ```python lst = [('A', 3), ('C', 1), ('B', 2)] lst.sort(key=lambda x: x[1]) print(lst) # 输出:[('C', 1), ('B', 2), ('A', 3)] ``` 在这里,我们传递了一个lambda函数作为key参数,它将返回每个元组的第二个元素作为排序依据。 如果需要按照多个属性进行排序,我们可以将多个属性放在一个元组进行比较,例如: ```python lst = [('A', 3), ('C', 1), ('B', 2)] lst.sort(key=lambda x: (x[1], x[0])) print(lst) # 输出:[('C', 1), ('B', 2), ('A', 3)] ``` 在这里,我们通过返回一个元组,先比较元素的第二个元素,再比较第一个元素,实现了多个属性的排序。 另外,如果需要对列表进行倒序排序,可以将第二个参数reverse设为True,例如: ```python lst = [4, 1, 3, 2] lst.sort(reverse=True) print(lst) # 输出:[4, 3, 2, 1] ``` 综上所述,key参数Pythonsort函数扮演了一个很重要的角色,可以帮助我们实现一些有趣的排序功能。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值