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

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

发布时间:2023-06-23 11:54:22

Python中有内置的sorted()函数,它可以对可迭代对象进行排序,包括列表、元组、字典等。本文将介绍如何使用内置的sorted()函数进行排序。

1. 基本用法

sorted()函数可以接受一个可迭代对象作为参数,并返回一个排序后的列表。

a = [3, 6, 2, 8, 1, 9]
b = sorted(a)
print(b) # [1, 2, 3, 6, 8, 9]

如果要对一个字典进行排序,可以使用sorted()函数的key参数进行指定。

d = {'apple': 10, 'banana': 5, 'orange': 8}
b = sorted(d, key=lambda x: d[x])
print(b) # ['banana', 'orange', 'apple']

上面的例子中,sorted()函数使用了lambda表达式作为key参数传递,lambda表达式接受x作为输入,返回d[x]作为输出。这样就可以按照字典的值对字典进行排序。

2. 降序排序

sorted()函数默认是升序排序,如果要进行降序排序,可以传递一个reverse=True参数给sorted()函数。

a = [3, 6, 2, 8, 1, 9]
b = sorted(a, reverse=True)
print(b) # [9, 8, 6, 3, 2, 1]

3. 对元组排序

sorted()函数也可以对元组进行排序,排序依据是元组 个元素的值。

a = [(3, 4), (1, 2), (5, 6), (2, 5)]
b = sorted(a)
print(b) # [(1, 2), (2, 5), (3, 4), (5, 6)]

4. 对多维列表排序

如果要对多维列表进行排序,可以使用sorted()函数的key参数指定在哪个位置进行排序。

a = [[3, 4], [1, 2], [5, 6], [2, 5]]
b = sorted(a, key=lambda x: x[1])
print(b) # [[1, 2], [3, 4], [2, 5], [5, 6]]

上面的例子中,sorted()函数使用了lambda表达式作为key参数传递,lambda表达式接受x作为输入,返回x[1]作为输出。这样就可以按照多维列表的第二个元素进行排序。

5. 对对象进行排序

如果要对对象进行排序,可以使用sorted()函数的key参数指定依照哪个属性进行排序。

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

    def __repr__(self):
        return repr((self.name, self.age))

people = [Person('Tom', 20), Person('Jerry', 15), Person('Dylan', 18)]
sorted_people = sorted(people, key=lambda x: x.name)
print(sorted_people) # [('Dylan', 18), ('Jerry', 15), ('Tom', 20)]

上面的例子中,定义了Person类,创建了一个名为people的对象列表,列表中包含3个人的信息。通过sorted()函数的key参数指定按照姓名进行排序。

6. 更高级的排序

sorted()函数支持更复杂的排序需求,可以使用operator模块中的itemgetter()函数,结合sorted()函数进行排序。

from operator import itemgetter

a = [(3, 4, 1), (1, 2, 5), (5, 6, 2), (2, 5, 4)]
b = sorted(a, key=itemgetter(1, 2))
print(b) # [(1, 2, 5), (5, 6, 2), (3, 4, 1), (2, 5, 4)]

上面的例子中,使用了itemgetter()函数代替lambda表达式来指定排序的key参数。

在以上示例中,我们介绍了Python内置的sorted()函数的基本用法及其特殊用法。sorted()是一个非常强大且实用的函数,如果您的程序需要对数据进行排序操作,那么可以考虑使用这个函数。