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

Python内置函数sorted()的使用技巧

发布时间:2023-08-30 17:55:55

sorted()是Python内置的排序函数,可以对可迭代对象进行排序操作。它可以接受多种参数类型,并且可以通过参数来指定排序规则和排序方式。下面是关于sorted()函数的一些使用技巧:

1. 对列表排序:

my_list = [4, 1, 3, 2]
sorted_list = sorted(my_list)
print(sorted_list)  # [1, 2, 3, 4]

2. 对字符串排序:

my_str = "banana"
sorted_str = sorted(my_str)
print(sorted_str)  # ['a', 'a', 'b', 'n', 'n']

3. 对元组排序:

my_tuple = (4, 1, 3, 2)
sorted_tuple = sorted(my_tuple)
print(sorted_tuple)  # [1, 2, 3, 4]

4. 对集合排序:

my_set = {4, 2, 3, 1}
sorted_set = sorted(my_set)
print(sorted_set)  # [1, 2, 3, 4]

5. 对字典按照键进行排序:

my_dict = {4: "d", 1: "a", 3: "c", 2: "b"}
sorted_dict = sorted(my_dict)
print(sorted_dict)  # [1, 2, 3, 4]

6. 对字典按照值进行排序:

my_dict = {4: "d", 1: "a", 3: "c", 2: "b"}
sorted_dict = sorted(my_dict.items(), key=lambda x: x[1])
print(sorted_dict)  # [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]

在上面的例子中,可以使用sorted()函数对字典的items()方法得到的键值对进行排序。通过key参数,可以指定根据哪个元素进行排序。

7. 对自定义对象排序:

对于自定义对象,可以通过在对象的类中实现__lt__、__le__、__gt__、__ge__等比较运算符的魔术方法来定义排序规则。例如:

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

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

    def __repr__(self):
        return f"Person(name={self.name}, age={self.age})"

people = [Person("Alice", 25), Person("Bob", 30), Person("Charlie", 20)]
sorted_people = sorted(people)
print(sorted_people)  # [Person(name=Charlie, age=20), Person(name=Alice, age=25), Person(name=Bob, age=30)]

在上面的例子中,通过重载__lt__方法,可以按照Person对象的age属性进行排序。

除了可以通过参数指定排序规则,sorted()函数还有一些其他的参数:

- reverse:用来指定排序方式,如果为True,则按照降序排序,默认为False。

- key:用来指定排序的依据,可以传入一个函数或lambda表达式来指定排序规则。

综上所述,sorted()是一个非常强大的排序函数,可以对各种类型的数据进行排序操作,并且提供了灵活多样的参数选项。通过合理使用参数和自定义的排序规则,可以满足不同的排序需求。