一、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)