List根据对象某一属性去重
时间: 2023-07-18 21:07:33 浏览: 64
如果你想根据 List 中的某一对象属性进行去重,可以使用 Python 中的 set() 函数。但是,set() 函数只能对可哈希对象进行去重,而对象并不是可哈希的。因此,你需要先将对象转换为可哈希的类型,然后再进行去重。
以下是一个例子,假设我们有一个学生对象列表,每个学生对象都有一个唯一的 ID 属性:
```python
class Student:
def __init__(self, id, name):
self.id = id
self.name = name
students = [
Student(1, "Alice"),
Student(2, "Bob"),
Student(3, "Charlie"),
Student(1, "Alice"), # 重复的学生 ID
Student(4, "David")
]
```
现在我们想要根据学生的 ID 属性进行去重,可以将每个学生对象转换为其 ID 属性,然后使用 set() 函数进行去重:
```python
unique_students = list(set(student.id for student in students))
```
这将返回一个包含唯一学生 ID 的列表。如果你想要得到包含唯一学生对象的列表,可以使用以下代码:
```python
unique_students = list({student.id: student for student in students}.values())
```
这将使用字典的键来去重,保留每个键对应的唯一值(即唯一的学生对象)。