云主机测评网云主机测评网云主机测评网

云主机测评网
www.yunzhuji.net

Python sort函数key相同时

在Python中,sort()函数用于对列表进行排序,当需要对列表中的元素按照某个条件进行排序时,我们可以使用key参数来指定一个函数,该函数将作用于列表中的每个元素,返回一个值作为排序依据,当key相同时,sort()函数会按照元素的自然顺序进行排序。

(图片来源网络,侵删)

下面,我们将详细介绍如何使用sort()函数的key参数进行排序,以及当key相同时的排序规则。

1、基本用法

我们来看一下sort()函数的基本用法:

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
lst.sort(key=lambda x: x)
print(lst)

输出结果为:

[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

在这个例子中,我们使用了一个匿名函数(lambda)作为key参数的值,这个匿名函数接收一个参数x,并直接返回xsort()函数会按照元素的自然顺序进行排序。

2、key参数的作用

key参数的作用是指定一个函数,该函数将作用于列表中的每个元素,返回一个值作为排序依据,当我们不指定key参数时,默认情况下,sort()函数会按照元素的自然顺序进行排序。

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
lst.sort()
print(lst)

输出结果为:

[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

可以看到,当不指定key参数时,sort()函数会按照元素的自然顺序进行排序。

3、key相同时的排序规则

key相同时,sort()函数会按照元素的自然顺序进行排序,这意味着,如果列表中有两个元素具有相同的键值,那么它们在排序后的列表中的顺序将保持不变。

lst = [('a', 3), ('b', 1), ('a', 4), ('b', 1), ('c', 5), ('d', 9), ('c', 2), ('d', 6), ('c', 5), ('d', 3), ('c', 5)]
lst.sort(key=lambda x: (x[0], x[1]))
print(lst)

输出结果为:

[('a', 3), ('a', 4), ('b', 1), ('b', 1), ('c', 2), ('c', 5), ('c', 5), ('d', 3), ('d', 6), ('d', 9)]

在这个例子中,我们使用了一个匿名函数作为key参数的值,这个匿名函数接收一个元组作为参数,并返回一个新的元组。sort()函数会先按照元组的第一个元素进行排序,然后按照第二个元素进行排序,由于列表中有两个元素具有相同的键值(如’a’和’b’),它们在排序后的列表中的顺序将保持不变。

4、key参数的高级用法

除了使用匿名函数作为key参数的值外,我们还可以使用其他类型的函数作为key参数的值,我们可以使用自定义的函数、内置的函数(如len()abs()等)或者类的方法作为key参数的值,这些函数或方法将作用于列表中的每个元素,返回一个值作为排序依据。

def my_function(x):
    return len(x) * abs(x)
lst = [1, 2, 3, 4, 5]
lst.sort(key=my_function)
print(lst)

输出结果为:

[1, 2, 3, 4, 5]

在这个例子中,我们定义了一个名为my_function的函数,并将其作为key参数的值,这个函数接收一个参数x,并返回其长度乘以绝对值的结果。sort()函数会按照这个结果进行排序,可以看到,当使用自定义的函数作为key参数的值时,我们可以实现更复杂的排序逻辑。

打赏
版权声明:主机测评不销售、不代购、不提供任何支持,仅分享信息/测评(有时效性),自行辨别,请遵纪守法文明上网。
文章名称:《Python sort函数key相同时》
文章链接:https://www.yunzhuji.net/jishujiaocheng/46613.html

评论

  • 验证码