我已定义了一个包含多个字段的自定义对象.
例如,假设我有一个Student对象,它由名称,ID和年龄组成.为了比较两个学生并确定他们是否是同一个学生,我实施了一种__ eq__方法,该方法将返回两个学生的年龄,姓名和ID是否匹配.
def __eq__(self, other): return self.name == other.name and self.ID == other.ID and self.age == other.age
请记住,学生只是一个例子,因此不考虑学生ID往往是独特的事实.
假设我有以下注册列表,其中包含任意数量的Student对象
[S1, S2, S3] [S2, S3] [S3, S5, S4] [S1, S4, S2, S1]
我想创建一些包含以下元素的数据结构
S1, S2, S3, S4, S5
最简单的方法是初始化一些数据结构,它可以容纳大量的东西,抓取一个项目,检查它是否存在于结构中,如果不存在则添加它.
new_list = some_new_list
for each list of students:
for each student in the list:
check if the student is in new_list
#decide what to do
如果我决定将其作为一个简单的列表来实现,我可能会进行大量的比较,因为我的列表会继续增长,特别是如果我有大量的学生和注册列表.
实现这个的有效方法是什么?两者都用于比较两个对象,然后使用该比较方法生成一组唯一的对象.
编辑:所以我尝试了一个简单的设置实现.
>>>a = Student("sample", 1234, 18)
>>>b = Student("sample", 1234, 18)
>>>students …