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

Python中的sorted()函数 – 详细说明和实际应用

发布时间:2023-06-12 10:19:40

sorted()函数是Python内置函数之一,用于排序列表和其他可迭代对象,返回一个新的已排序的列表。此函数可用于排序数字、字符串和自定义对象。在本文中,我们将介绍sorted()函数的详细说明和实际应用。

1. 语法

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

其中,

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

- key(可选参数):指定用于排序的关键字函数,这个关键字可以是一个函数或Lambda表达式。

- reverse(可选参数):如果为True,则按降序排列。

2. 实例

下面通过实例来说明sorted()函数的基本用法:

# 排序数字

numbers = [1, 5, 2, 8, 4, 9]

sorted_numbers = sorted(numbers)

print(sorted_numbers)  # [1, 2, 4, 5, 8, 9]

# 排序字符串

words = ["apple", "banana", "orange", "cherry"]

sorted_words = sorted(words)

print(sorted_words)  # ['apple', 'banana', 'cherry', 'orange']

# 排序自定义对象

class Person:

    def __init__(self, name, age):

        self.name = name

        self.age = age

people = [

    Person("Alice", 25),

    Person("Bob", 30),

    Person("Charlie", 20),

]

# 按年龄升序排序

sorted_people = sorted(people, key=lambda p: p.age)

for p in sorted_people:

    print(p.name, p.age)

# Charlie 20

# Alice 25

# Bob 30

# 按年龄降序排序

sorted_people2 = sorted(people, key=lambda p: p.age, reverse=True)

for p in sorted_people2:

    print(p.name, p.age)

# Bob 30

# Alice 25

# Charlie 20

3. 实际应用

sorted()函数常用于数据分析、机器学习等领域中的排序操作。下面介绍几个实际应用场景。

3.1. 排序字典

字典是Python中常用的数据结构之一,但字典本身是无序的。如果需要对字典按照键或值进行排序,可以使用sorted()函数。下面是一个示例:

# 排序字典

d = {"a": 3, "b": 1, "c": 2}

sorted_d = dict(sorted(d.items(), key=lambda x: x[1]))

print(sorted_d)  # {'b': 1, 'c': 2, 'a': 3}

上面的代码使用sorted()函数将字典d按值进行排序。首先,使用d.items()将字典转换为可迭代对象,然后使用lambda表达式指定按值排序。最后,使用dict()将排好序的列表转换为字典。

3.2. 排序csv文件

csv(Comma-Separated Values)是一种常见的文件格式,常用于存储和传输简单的表格数据。为了方便起见,可以使用sorted()函数对CSV文件进行排序。下面是一个示例:

# 排序csv文件

import csv

with open("data.csv", "r") as f:

    reader = csv.DictReader(f)

    sorted_rows = sorted(reader, key=lambda row: row["age"])

with open("sorted_data.csv", "w") as f:

    writer = csv.DictWriter(f, fieldnames=reader.fieldnames)

    writer.writeheader()

    for row in sorted_rows:

        writer.writerow(row)

上面的代码使用标准库csv读取和写入CSV文件。首先,使用csv.DictReader()读取CSV文件,并使用lambda表达式指定按年龄排序。然后,使用csv.DictWriter()将排好序的行写入新的CSV文件。

3.3. 排序numpy数组

NumPy是Python中常用的科学计算库,提供了用于处理高维数组和矩阵的工具。为了方便起见,可以使用sorted()函数对NumPy数组进行排序。下面是一个示例:

# 排序numpy数组

import numpy as np

a = np.array([[3, 1], [2, 4]])

print("原始数组:")

print(a)

sorted_a = np.array(sorted(a.flat))

sorted_a = sorted_a.reshape(a.shape)

print("按升序排序:")

print(sorted_a)

使用numpy.array()创建一个二维数组a。然后,使用a.flat将数组展平成一维数组,并使用sorted()函数进行排序。最后,使用numpy.reshape()将排好序的数组转换回原来的形状。

4. 小结

本文介绍了sorted()函数的语法、实例和实际应用。在数据分析、机器学习等领域中,排序往往是必要的操作。sorted()函数可以方便地对列表、字典、CSV文件、NumPy数组等各种可迭代对象进行排序。在使用sorted()函数时,可以指定关键字函数或Lambda表达式来定制排序规则。