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

如何使用Python内置函数sorted()

发布时间:2023-06-23 16:31:50

Python的内置函数sorted()可对任何序列进行排序,如列表、元组、字符串等,并返回一个新的已排序序列。sorted()函数有多种用法和可选参数,下面将介绍如何使用sorted()函数。

1、排序列表

示例:将一个列表按升序排列并输出

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_lst = sorted(lst)
print(sorted_lst)

输出:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

2、按字符串长度排序

示例:将一个字符串列表按照字符串长度从小到大排序并输出

lst = ["apple", "banana", "cherry", "date", "elderberry"]
sorted_lst = sorted(lst, key=len)
print(sorted_lst)

输出:['date', 'apple', 'banana', 'cherry', 'elderberry']

其中,key参数传递了一个lambda表达式,该表达式返回字符串的长度。

3、按字母顺序排序

示例:将一个字符串列表按字母顺序排序并输出

lst = ["apple", "banana", "cherry", "date", "elderberry"]
sorted_lst = sorted(lst)
print(sorted_lst)

输出:['apple', 'banana', 'cherry', 'date', 'elderberry']

说明:sorted()函数默认按升序排序,因此直接调用sorted()函数即可。

4、按照多个条件排序

示例:将一个元组列表按照第二个元素升序排序,如果第二个元素相同,则按照 个元素降序排序

lst = [(3, "apple"), (2, "date"), (1, "banana"), (2, "cherry"), (1, "elderberry")]
sorted_lst = sorted(lst, key=lambda x: (x[1], -x[0]))
print(sorted_lst)

输出:[(3, 'apple'), (1, 'banana'), (2, 'cherry'), (2, 'date'), (1, 'elderberry')]

说明:key参数传递了一个lambda表达式,该表达式首先按照第二个元素升序排序,如果第二个元素相同,则按照 个元素降序排序。

5、对字典按照键或值进行排序

示例1:对一个字典按照键升序排序并输出

dct = {"banana": 3, "date": 2, "apple": 4, "elderberry": 1, "cherry": 2}
sorted_dct = dict(sorted(dct.items()))
print(sorted_dct)

输出:{'apple': 4, 'banana': 3, 'cherry': 2, 'date': 2, 'elderberry': 1}

说明:使用sorted()函数对字典进行排序时,会先转化为元组列表,再通过dict()函数转化为字典。

示例2:对一个字典按照值降序排序并输出

dct = {"banana": 3, "date": 2, "apple": 4, "elderberry": 1, "cherry": 2}
sorted_dct = dict(sorted(dct.items(), key=lambda x: x[1], reverse=True))
print(sorted_dct)

输出:{'apple': 4, 'banana': 3, 'cherry': 2, 'date': 2, 'elderberry': 1}

说明:key参数传递了一个lambda表达式,该表达式返回每个键值对的值,以实现对字典值的排序;reverse参数设为True实现降序排序。

在本文中,我们介绍了Python内置函数sorted()函数的多种用法,并给出了代码示例。这里需要注意的是,sorted()函数返回一个新的已排序序列,并不会改变原序列。如果要改变原序列,请使用列表的sort()方法。