根据某个属性对list中的所有对象分组,该属性值相同的对象分到一个组
时间: 2023-05-09 08:03:46 浏览: 128
根据某个属性对List中的所有对象分组,该属性值相同的对象分到一个组
列表是一种常见的数据结构,其中包含许多对象。如果我们想将这些对象根据某个属性分组,我们可以使用Python中的groupby()函数。
groupby()函数的作用是将一个可迭代对象分组成多个小组,通常是基于某个关键字函数分组。我们可以使用这个函数根据列表中每个对象的某个属性进行分组。关键字函数将返回一个我们想要将对象分组的属性值。然后,groupby()函数将所有具有相同属性值的对象分成一组,将它们放入一个由元组组成的列表中。
例如,我们有一个列表,其中包含多个学生对象。我们可以根据他们的年级来对学生进行分组。我们可以定义一个函数,将学生对象作为输入,输出他们的年级。然后使用groupby()函数将学生列表中的学生根据年级分组。
以下是示例代码:
```python
from itertools import groupby
class Student:
def __init__(self, name, grade):
self.name = name
self.grade = grade
students = [
Student('Alice', 3),
Student('Bob', 2),
Student('Charlie', 3),
Student('David', 2),
]
def group_by_grade(student):
return student.grade
students_by_grade = [
(grade, list(students)) for grade, students in groupby(students, group_by_grade)
]
for grade, students in students_by_grade:
print(f"Grade {grade}: {[student.name for student in students]}")
```
输出:
```
Grade 3: ['Alice', 'Charlie']
Grade 2: ['Bob', 'David']
```
这个例子中,我们定义了一个名叫Student的类来表示学生。我们将学生对象存储在一个列表中,然后定义一个group_by_grade()函数将学生对象根据其年级属性进行分组。我们使用groupby()函数将学生列表中的学生根据年级进行分组,并将它们放置在一个由元组组成的列表中。 最后,我们循环遍历每个组,打印出由该组内的学生组成的列表。
总之,我们可以使用Python中的groupby()函数将具有共同属性的对象分组。
阅读全文