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