使用Python函数 sorted()对序列进行排序
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()函数则成为了高效算法中不可或缺的一部分。
