您的位置:

对list中的对象进行排序

一、Python中排序函数

对list中的对象进行排序,首先要了解Python中的排序函数。Python中有两个常用的排序函数sorted()和sort(),其中sorted()是内置函数,可以对所有的可迭代对象进行排序,而sort()是列表方法,只能对列表进行排序。

两个函数的使用方法如下:

# sorted()函数示例
list1 = [3, 1, 4, 1, 5, 9, 2, 6]
list2 = sorted(list1)

# sort()方法示例
list1.sort()

需要注意的是,这两个函数在默认情况下都是按照升序排列,如果需要按照降序排列,可以指定reverse参数为True。

# 按照降序排列示例
list1 = [3, 1, 4, 1, 5, 9, 2, 6]
list2 = sorted(list1, reverse=True)

# 按照降序排列示例
list1.sort(reverse=True)

二、对list对象bean进行三重分组排序

对于一个列表中的对象,可能需要按照多个字段进行排序,这时就需要对其进行多重排序。下面给出一个对list对象bean进行三重分组排序的示例。

假设有如下的一个bean对象:

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

现在有一个包含多个Bean对象的列表list1,需要按照id、name、age进行多重排序,示例代码如下:

list1.sort(key=lambda x: (x.id, x.name, x.age))

上述代码中,sort()方法的key参数是一个lambda函数,该函数的返回值是一个元组,元组中包含需要排序的字段,按照元组中的字段顺序排序,即按照id、name、age字段的顺序进行排序。

三、list对象排序方法

除了使用Python内置的排序函数之外,还可以使用list对象自带的一些排序方法。下面是对几种常用方法的介绍:

1. sort()方法

sort()方法可以对列表中元素进行原地排序,即不产生新的列表,示例代码如下:

list1 = [3, 1, 4, 1, 5, 9, 2, 6]
list1.sort()

2. sorted()函数

sorted()函数可以对原列表进行排序并返回排序后的列表,示例代码如下:

list1 = [3, 1, 4, 1, 5, 9, 2, 6]
list2 = sorted(list1)

3. reverse()方法

reverse()方法可以倒序排列列表中的元素,示例代码如下:

list1 = [3, 1, 4, 1, 5, 9, 2, 6]
list1.reverse()

四、list集合对象排序

如果需要对list集合对象进行排序,可以使用sorted()函数和sort()方法,其使用方法与对列表进行排序相同,示例代码如下:

# 使用sorted()函数对list集合对象进行排序
list1 = [{'id':1, 'name':'Tom', 'age':18}, 
         {'id':2, 'name':'Jerry', 'age':20}, 
         {'id':3, 'name':'Lucy', 'age':16}]
list2 = sorted(list1, key=lambda x:x['age'])

# 使用sort()方法对list集合对象进行排序
list1.sort(key=lambda x:x['name'])

五、对象的list集合排序

对于一个对象的list集合,如果需要按照其中某个属性进行排序,可以使用sorted()函数和sort()方法,并指定排序的key参数为该属性名。

假设现在有如下的一个Person对象:

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

现在有一个包含多个Person对象的列表person_list,需要按照年龄age进行排序,示例代码如下:

person_list = [Person('Tom', 18), Person('Jerry', 20), Person('Lucy', 16)]
sorted_person_list = sorted(person_list, key=lambda x:x.age)

六、list存储对象怎么排序

对于一个存储对象的list,如果需要按照其中某个属性进行排序,可以使用sorted()函数和sort()方法,并指定排序的key参数为该属性名。

假设现在有如下的一个Student对象:

class Student():
    def __init__(self, name, score):
        self.name = name
        self.score = score

现在有一个存储Student对象的列表student_list,需要按照分数score进行排序,示例代码如下:

student_list = [Student('Tom', 80), Student('Jerry', 90), Student('Lucy', 70)]
sorted_student_list = sorted(student_list, key=lambda x:x.score, reverse=True)

七、对象list排序sort降序

如果需要按照降序进行排序,可以在sorted()函数和sort()方法中指定reverse参数为True。

假设现在有如下的一个Teacher对象:

class Teacher():
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary

现在有一个包含多个Teacher对象的列表teacher_list,需要按照薪资salary进行降序排序,示例代码如下:

teacher_list = [Teacher('Tom', 5000), Teacher('Jerry', 8000), Teacher('Lucy', 6000)]
sorted_teacher_list = sorted(teacher_list, key=lambda x:x.salary, reverse=True)