要从包含列表字段的数据类对象列表中删除重复项,可以使用Python中的dataclasses
模块和set
数据结构。以下是一个示例代码:
from dataclasses import dataclass
from typing import List
@dataclass
class DataClass:
id: int
values: List[int]
def remove_duplicates(data_list: List[DataClass]) -> List[DataClass]:
seen = set()
unique_list = []
for item in data_list:
# Convert the list field to a tuple so it can be hashed
item_tuple = tuple(item.values)
if item_tuple not in seen:
seen.add(item_tuple)
unique_list.append(item)
return unique_list
# 示例数据
data_list = [
DataClass(1, [1, 2, 3]),
DataClass(2, [1, 2, 3]),
DataClass(3, [4, 5, 6]),
DataClass(4, [4, 5, 6]),
DataClass(5, [7, 8, 9])
]
# 去重
unique_data_list = remove_duplicates(data_list)
# 打印结果
for item in unique_data_list:
print(f"ID: {item.id}, Values: {item.values}")
dataclass
装饰器定义一个数据类DataClass
,其中包含一个整数id
和一个整数列表values
。remove_duplicates
,该函数接受一个DataClass
对象列表,并返回去重后的列表。seen
:使用一个集合seen
来记录已经见过的列表字段的元组形式。values
字段转换为元组,并检查该元组是否已经在seen
集合中。如果没有,则将其添加到seen
集合和结果列表unique_list
中。这种方法适用于需要从包含列表字段的数据类对象列表中删除重复项的场景,例如:
通过这种方法,可以有效地从包含列表字段的数据类对象列表中删除重复项。
领取专属 10元无门槛券
手把手带您无忧上云