python 一个列表中包含多个Individual类的对象,删除每个对象中的path属性值重复的对象,其中path类型为列表
时间: 2024-09-22 21:07:49 浏览: 57
在Python中,你可以使用列表推导式以及集合(set)来处理这个问题。首先,你需要遍历列表,将每个`Individual`对象的`path`属性转换为字符串(因为集合只支持不可变类型),然后检查这个路径是否已经在集合中。如果不在,就添加到新的列表里。最后,返回去重后的列表。
这是一个示例代码:
```python
class Individual:
def __init__(self, path):
self.path = path
def remove_duplicates(lst):
unique_paths = []
paths_as_strings = {str(obj.path) for obj in lst}
for path_string in paths_as_strings:
unique_paths.append(Individual(eval(path_string))) # 将字符串路径还原回列表
return unique_paths
# 使用示例
individual_list = [Individual(['a', 'b']), Individual(['c', 'd']), Individual(['a', 'b'])]
unique_list = remove_duplicates(individual_list)
```
在这个例子中,`eval()`函数用于从字符串形式恢复原始的列表类型,但这可能会有安全风险,因为它可以执行任意Python代码。在实际应用中,应确保输入的安全,或者使用更复杂的方式来解析路径。
阅读全文