📜  python 按值排序数组 - Python (1)

📅  最后修改于: 2023-12-03 15:19:09.894000             🧑  作者: Mango

Python按值排序数组

如果你需要对一个数字数组按升序或降序排序,Python的内置方法sort()可以派上用场。sort()方法可以直接作用于list类型的数据,并将其修改为升序或降序。如果需要保留原数组,则可以使用Python内置的sorted()函数。

排序方法
sort()方法

sort()方法是列表排序的常用方法之一,其用法非常简单,只需要在列表变量名后加上.sort()即可按照升序排序:

array = [5, 3, 1, 2, 4]
array.sort()
print(array)
# 输出:[1, 2, 3, 4, 5]

如果需要按照降序排序,则可以在.sort()方法中添加参数reverse=True:

array = [5, 3, 1, 2, 4]
array.sort(reverse=True)
print(array)
# 输出:[5, 4, 3, 2, 1]
sorted()函数

如果需要保留原有数组,可以使用Python内置的sorted()函数。sorted()函数可以对列表、元组等进行排序,且会返回一个新的排序过的列表。与sort()不同的是,sorted()不会对原列表进行修改:

array = [5, 3, 1, 2, 4]
new_array = sorted(array)
print(new_array)
# 输出:[1, 2, 3, 4, 5]
print(array)
# 输出:[5, 3, 1, 2, 4]
按值排序

有时候我们需要按照某个值进行排序,而不是升序或降序。例如,我们可能希望对一个字典列表按照其中某个属性的值进行排序。在这种情况下,可以使用Python内置的sorted()函数,并传入key参数。

例如,我们有一个字典列表,其中每个字典都有一个name属性和一个age属性,我们希望按照age属性进行排序:

people = [
    {'name': 'Alice', 'age': 25},
    {'name': 'Bob', 'age': 20},
    {'name': 'Charlie', 'age': 30},
    {'name': 'David', 'age': 25},
]

sorted_people = sorted(people, key=lambda x: x['age'])

for person in sorted_people:
    print(person['name'], person['age'])

输出:

Bob 20
Alice 25
David 25
Charlie 30

在上面的代码中,我们传入了一个lambda函数作为key参数,该函数将每个字典作为输入,并返回该字典的age属性的值作为排序依据。

总结

Python的内置方法sort()和sorted()提供了排序和按值排序的能力,是Python的基础功能之一。熟练掌握这两个方法的用法,可以在实际工作中帮助我们处理各种不同类型的数据。