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

Python中的sorted()函数及其应用

发布时间:2023-06-17 09:18:48

Python中的sorted()函数是一种经常使用的排序工具。它可以对列表、元组、字典等不同的数据类型进行排序,并返回排序后的结果。

语法

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

参数:

- iterable:需要排序的可迭代对象,如列表、元组、字典等;

- key:用于指定排序的关键字,这是一个可选参数。如果未提供指定排序的关键字,则将使用默认的排序规则。例如,可使用lambda函数进行排序;

- reverse:表示是否降序排序。默认为False,表示升序排序。

返回值

返回排序后的结果,类型与原对象类型相同。

应用

1. 对列表进行排序

列表排序是最常见的应用,可以对数值型、字符型等不同的列表数据类型进行排序。

代码示例:

lst = [3, 8, 2, 1, 5, 4, 6, 9, 7]
result = sorted(lst)
print(result) # [1, 2, 3, 4, 5, 6, 7, 8, 9]

2. 对元组进行排序

元组是一种不可变序列,可以使用sorted()函数对其进行排序。

代码示例:

tp = (3, 8, 2, 1, 5, 4, 6, 9, 7)
result = sorted(tp)
print(result) # [1, 2, 3, 4, 5, 6, 7, 8, 9]

3. 对字典进行排序

字典是无序的键值对,无法直接使用sorted()函数进行排序,但可以通过将字典转换为列表或元组,然后对列表或元组进行排序的方式实现。

代码示例:

dic = {'a':3, 'b':8, 'c':2, 'd':1, 'e':5, 'f':4, 'g':6, 'h':9, 'i':7}
result = sorted(dic.items(), key=lambda x:x[1])
print(result) # [('d', 1), ('c', 2), ('a', 3), ('f', 4), ('e', 5), ('g', 6), ('i', 7), ('b', 8), ('h', 9)]

上述示例中,使用了lambda表达式作为排序关键字,以字典中的值作为排序依据。

4. 对自定义对象进行排序

Python允许对自定义对象进行排序。为实现自定义排序,需要在自定义对象中定义__lt__方法,该方法用于定义对象的排序规则。

代码示例:

class Student:
    def __init__(self, name, age, score):
        self.name = name
        self.age = age
        self.score = score

    def __lt__(self, other):
        return self.score < other.score

stu1 = Student('Tom', 20, 80)
stu2 = Student('Jerry', 19, 90)
stu3 = Student('Lucy', 21, 70)
stus = [stu1, stu2, stu3]

result = sorted(stus)
for r in result:
    print(r.name, r.age, r.score)

# 输出结果:
# Lucy 21 70
# Tom 20 80
# Jerry 19 90

上述示例中,定义了一个Student类,并在该类中定义了__lt__方法,以分数为排序依据。在排序中,直接调用sorted()函数即可得到按分数升序排序后的结果。

总结

Python中的sorted()函数可以对不同类型的数据进行排序,并支持降序排序和自定义排序。在实际开发中,排序是一个很常见的操作,掌握了sorted()函数的使用方法,可以提高代码效率和可读性。