Python中的sorted怎么使用
更新时间:2023-10-23sorted()函数的基本使用
sorted()函数是Python内置的一个高阶函数,用于对可迭代对象进行排序。
它的基本用法是:sorted(iterable, key=None, reverse=False)。
其中,iterable表示要进行排序的可迭代对象;key表示排序的关键字,它接受一个函数作为参数,用来指定参与排序比较的元素;reverse表示是否要按倒序排序,默认为升序。
# 对列表进行排序 l = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] sorted_l = sorted(l) print(sorted_l) # [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9] # 对元组进行排序 t = (3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5) sorted_t = sorted(t) print(sorted_t) # [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9] # 对字典进行排序(返回的是排序后的元素列表) d = {'b': 3, 'a': 1, 'c': 2} sorted_d = sorted(d.items(), key=lambda x: x[0]) print(sorted_d) # [('a', 1), ('b', 3), ('c', 2)]
按字符串长度排序
在实际应用中,我们可能需要对一个字符串列表按照字符串的长度进行排序。这时可以使用key参数指定一个函数,该函数返回字符串的长度。
words = ['apple', 'banana', 'orange', 'kiwi', 'grape'] sorted_words = sorted(words, key=lambda x: len(x)) print(sorted_words) # ['kiwi', 'grape', 'apple', 'banana', 'orange']
按多个字段排序
有时候需要按照多个字段进行排序,可以使用lambda函数返回一个元组,元组中包含需要排序的多个字段。
students = [ {'name': 'Alice', 'age': 20, 'score': 90}, {'name': 'Bob', 'age': 18, 'score': 80}, {'name': 'Chris', 'age': 22, 'score': 85}, {'name': 'David', 'age': 21, 'score': 90}, ] sorted_students = sorted(students, key=lambda x: (x['score'], x['age']), reverse=True) print(sorted_students) """ [{'name': 'Alice', 'age': 20, 'score': 90}, {'name': 'David', 'age': 21, 'score': 90}, {'name': 'Chris', 'age': 22, 'score': 85}, {'name': 'Bob', 'age': 18, 'score': 80}] """
结合列表推导式对列表排序
除了使用sorted()函数,还可以结合列表推导式对列表进行排序。
l = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] new_l = [x for x in l if x % 2 == 0] # 筛选出偶数 print(new_l) # [4, 2, 6] sorted_l = sorted([x for x in l if x % 2 == 0]) print(sorted_l) # [2, 4, 6]
sorted()函数是Python内置的排序函数,使用方便灵活,可以根据实际情况灵活使用其中的参数进行排序,是Python语言的一个强大工具。