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

在Python中如何使用sorted()函数对列表或可迭代对象进行排序?

发布时间:2023-06-13 16:03:56

在Python中,提供了sorted()函数方便我们对列表或可迭代对象进行排序。sorted()函数的基本语法如下:

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

其中:

- iterable:表示要排序的可迭代对象,如:列表、元组、字符串等。

- key:表示排序的关键字。排序时,会对iterable中的每个元素调用key函数,然后根据函数返回值进行排序。默认值为None,表示按照元素的自然顺序排序。

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

下面通过一些示例来介绍如何使用sorted()函数实现不同的排序操作。

1. 对列表按元素值进行升序排列

在以下示例中,我们创建一个包含一些整数的列表,然后使用sorted()函数将其进行升序排列:

nums = [5, 2, 4, 7, 1, 3]

print(sorted(nums))

# 输出:[1, 2, 3, 4, 5, 7]

2. 对列表按元素值进行降序排列

要进行降序排列,只需将reverse参数设为True,如下所示:

nums = [5, 2, 4, 7, 1, 3]

print(sorted(nums, reverse=True))

# 输出:[7, 5, 4, 3, 2, 1]

3. 对元组进行排序

下面的示例展示了如何对元组中的元素进行升序排列:

tup = (5, 2, 4, 7, 1, 3)

print(sorted(tup))

# 输出:[1, 2, 3, 4, 5, 7]

4. 对字典按键进行排序

要对字典按键进行排序,需要先将字典键提取到列表中,然后对列表进行排序:

dict1 = {'a': 5, 'c': 2, 'b': 4, 'e': 7, 'd': 1}

keys_list = list(dict1.keys())

print(sorted(keys_list))

# 输出:['a', 'b', 'c', 'd', 'e']

5. 对字典按值进行排序

同样,要对字典按值进行排序,需要先将字典值提取到列表中,然后对列表进行排序:

dict1 = {'a': 5, 'c': 2, 'b': 4, 'e': 7, 'd': 1}

values_list = list(dict1.values())

print(sorted(values_list))

# 输出:[1, 2, 4, 5, 7]

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

在Python中,我们可以使用类(object)的__lt__方法自定义排序规则。下面的示例演示了如何对包含Person对象的列表进行排序:

class Person:

    def __init__(self, name, age):

        self.name = name

        self.age = age

        

    def __lt__(self, other):

        # 根据年龄进行排序

        return self.age < other.age

        

persons = [Person('Tom', 25), Person('John', 18), Person('Mary', 30)]

print(sorted(persons, key=lambda x: x.age))

# 输出:[<__main__.Person object at 0x000001C56098A8C8>, <__main__.Person object at 0x000001C56098A848>, <__main__.Person object at 0x000001C56098A788>]

通过传递指定键参数key,我们可以对自定义对象进行排序。

总之,使用sorted()函数在Python中可以方便地对列表或可迭代对象进行排序,可以按照元素值、键或值、自定义对象等进行排序。使用时只需指定排序的方式(升序或降序),以及用于排序的键或函数,即可实现不同的排序操作。