欢迎访问宙启技术站
智能推送

Python中的sorted()函数:如何对列表按特定顺序排序?

发布时间:2023-06-23 00:57:59

Python中的排序算法通常以sorted()函数提供。它提供了一种对"可迭代对象"进行排序的方法。这里的可迭代对象可以是列表、元组、字典等。sorted()的语法如下:

sorted(iterable[, key][, reverse])

参数说明:

Iterable:要排序的序列。

key:参数 key 用来指定一个可调用的函数来执行排序。根据指定的函数对每个元素进行字典、数值或其他排序。

reverse:指定是否要以相反的顺序排列序列,默认为False,即升序排列。

sorted()函数可以将列表元素按照默认方式进行升序排列。但有时需要将列表按特定方式进行排序,比如按照字符串长度、按照元素某个属性、按照自定义的顺序等。

以下是一些实用的技巧:

1. 按照字符串长度排列

对于字符串类型,可以使用len函数来获取其长度,从而在排序时指定按照长度进行排序。

例如:

lst = ['apple', 'orange', 'pear', 'banana', 'kiwi']

sorted_lst = sorted(lst, key=len)

print(sorted_lst)

输出:

['kiwi', 'pear', 'apple', 'banana', 'orange']

2. 按照元素某个属性排列

如果要按照元素某个属性进行排序,则需要在key参数中指定该属性的访问方式。例如:

lst = [{'name': 'Tom', 'age': 20}, {'name': 'Jerry', 'age': 18}, {'name': 'Lucy', 'age': 19}]

sorted_lst = sorted(lst, key=lambda x: x['age'])

print(sorted_lst)

输出:

[{'name': 'Jerry', 'age': 18}, {'name': 'Lucy', 'age': 19}, {'name': 'Tom', 'age': 20}]

在这里,我们使用了lambda函数来访问元素的'age'属性进行排序。

3. 按照自定义的顺序排列

如果要按照自定义的顺序进行排序,可以在key参数中使用一个自定义函数实现。例如:

lst = ['watermelon', 'apple', 'banana', 'orange']

order = ['banana', 'apple', 'orange', 'watermelon']

ordered_lst = sorted(lst, key=lambda x:order.index(x))

print(ordered_lst)

输出:

['banana', 'apple', 'orange', 'watermelon']

在这里,我们首先定义了一个顺序列表,然后使用index()函数来确定每个元素在顺序列表中的位置,最后按照位置进行排序。

总之,Python中的sorted()函数为我们提供了一个强大的排序算法,可以很容易地根据不同的需求对列表进行排序。无论是按照字符串长度,按照元素某个属性,还是按照自定义的顺序进行排序,我们都可以使用该函数来实现。