Python中数据的比较

2024-04-24 05:13:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的UML图:

                   School
                      |
                   Teacher
                      |
                   Children  

我访问python中的类SchoolTeacher和Children中的数据,如下所示:

for Teacher in School.getTeachers():
        print Teacher.getName()
        for Children in Teacher.getChildrens():
            print Children.getName()

这是我得到的结果:

Mr. Smith
A
B
C
D
E
F
Mr. Paul
D
E
F

我想把teacher1下的每个孩子的名字和teacher two下的每个孩子的名字进行比较。你知道吗

这两个的输出应该是:

A,B,C are not under Mr. Paul


Tags: 数据infor孩子名字umlmrprint
1条回答
网友
1楼 · 发布于 2024-04-24 05:13:03

基本代码

使用集合,例如:

teachers = list(School.getTeachers())
teacher1 = teachers[0]
teacher2 = teachers[1]

diff = set(teacher1.getChildrens()) - set(teacher2.getChildrens())
print "%s are not under %s" % (", ".join(c.getName() for c in diff), teacher2.getName())

扩展示例

>>> class Student(object):
...     def __init__(self, name):
...         self.name = name
...     def getName(self):
...         return self.name    
... 
>>> class Teacher(object):
...     def __init__(self, name, students):
...         self.name = name
...         self.students = students
...     def getChildrens(self):
...         return self.students
...     def getName(self):
...         return self.name
... 
>>> class School(object):
...     def __init__(self, teachers):
...         self.teachers = teachers
...     def getTeachers(self):
...         return self.teachers
... 
>>> students = [Student("A"), Student("B"), Student("C"), Student("D"), Student("E"), Student("F"), ]
>>> s = Teacher("Smith", students)
>>> p = Teacher("Paul", students[3:])
>>> school = School([s, p])
>>> 
>>> teachers = list(school.getTeachers())
>>> teacher1 = teachers[0]
>>> teacher2 = teachers[1]
>>> 
>>> diff = set(teacher1.getChildrens()) - set(teacher2.getChildrens())
>>> print "%s are not under %s" % (", ".join(c.getName() for c in diff), teacher2.getName())
B, C, A are not under Paul

相关问题 更多 >