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

使用Python函数 sorted()对序列进行排序

发布时间:2023-05-21 17:35:29

Python中的sorted()函数是一种非常强大的工具,可以对列表、元组、集合或字典等各种类型的序列进行排序,实现升序或降序排列。

sorted()函数提供了以下几种用法:

1. 对可迭代对象进行排序

sorted(iterable, key=None, reverse=False)

其中,iterable表示要排序的序列,key表示排序条件,默认为None,reverse表示排序方式,即升序或降序,默认为False,即升序。

比如,对列表进行排序:

lst = [1, 3, 2, 4, 5]

sorted_lst = sorted(lst)

print(sorted_lst)

输出结果为:

[1, 2, 3, 4, 5]

2. 对字典按键排序

sorted(dict, key=None, reverse=False)

其中,dict表示要排序的字典,key表示排序条件,默认为None,reverse表示排序方式,即升序或降序,默认为False,即升序。

比如,对字典按键进行排序:

dict1 = {'c': 3, 'b': 2, 'a': 1}

sorted_dict1 = sorted(dict1)

print(sorted_dict1)

输出结果为:

['a', 'b', 'c']

3. 对字典按值排序

sorted(dict.items(), key=lambda x:x[1], reverse=False)

其中,dict.items()获取字典的键值对,key=lambda x:x[1]表示按值排序,reverse表示排序方式。

比如,对字典按值进行排序:

dict2 = {'c': 3, 'b': 2, 'a': 1}

sorted_dict2 = sorted(dict2.items(), key=lambda x:x[1])

print(sorted_dict2)

输出结果为:

[('a', 1), ('b', 2), ('c', 3)]

排序方法的选择:

1. 单关键字排序

如果要对单个关键字进行排序,那么推荐使用key参数来定义单个关键字排序:

li = [{"age":20,"name":"jul"},{"age":15,"name":"jam"},{"age":25,"name":"jack"}]

li.sort(key=lambda d:d["age"])

print(li)  # [{'age': 15, 'name': 'jam'}, {'age': 20, 'name': 'jul'}, {'age': 25, 'name': 'jack'}]

2. 多关键字排序

多关键字排序,可以理解成先按 个关键字排序,如果 个关键字相同,则按照第二个关键字排序,以此类推。

li = [{"age":20,"name":"jul"},{"age":15,"name":"jam"},{"age":15,"name":"jul"},{"age":25,"name":"jack"}]

li.sort(key=lambda d: (d["age"], d["name"]))

print(li)  # [{'age': 15, 'name': 'jam'}, {'age': 15, 'name': 'jul'}, {'age': 20, 'name': 'jul'}, {'age': 25, 'name': 'jack'}]

在多关键字排序中,我们使用了元组来对关键字进行排序,优先按元组中 个元素排序,如果 个元素相同,则按照第二个元素排序,以此类推。

3. 排序方式

sorted()函数默认是按照升序排列,如果要按照降序排列,则需要设置reverse参数为True。

li = [{"age":20,"name":"jul"},{"age":15,"name":"jam"},{"age":15,"name":"jul"},{"age":25,"name":"jack"}]

li.sort(key=lambda d: (d["age"], d["name"]), reverse=True)

print(li)  # [{'age': 25, 'name': 'jack'}, {'age': 20, 'name': 'jul'}, {'age': 15, 'name': 'jul'}, {'age': 15, 'name': 'jam'}]

在以上用法中,可以看到sorted()函数可以针对不同的数据类型进行排序操作,例如列表、元组、集合和字典等。同时,还可以通过关键字参数key来指定排序的依据。此外,还可以通过reverse参数来控制升序和降序排列。无论是对于基本数据类型还是自定义数据类型,sorted()函数都能实现强大的排序功能。

这些用法的灵活性和可扩展性使得Python的sorted()函数成为了Python开发者家喻户晓的一个工具函数,尤其是对于大规模数据的处理和前端数据的可视化分析,往往需要采用一些高效的排序算法来优化性能,而sorted()函数则成为了高效算法中不可或缺的一部分。