ребята!У меня есть класс ('Student') с 3 атрибутами ('name', 'id', 'gpa').Затем у меня есть список («ученики») предметов этого класса.Мне нужно сохранить в другом списке все экземпляры «студентов» на основе первой буквы («ключ») его списка атрибутов «имя».Таким образом, новый список должен иметь «student.name», «Students.id», «Students.gpa» для каждого «имени», которое начинается с «ключа».
Я пытался studentsNames = filter(lambda x: x.startswith(key), students)
Но список ('StudentsNames') появляется пустым, даже если есть имена, начинающиеся с 'key'.
Это пример кода.Полный класс Студент здесь: https://github.com/lelecarabina/python3/blob/master/Student.py и полный код ниже здесь: https://github.com/lelecarabina/python3/blob/master/StudentFinder.py
...
#Create new Student object students
students = [Student((),(),())] * numStudents
print("All Students:")
# Initialize List of Student 'students' with **CONSTRUCTOR** and Print
for x in range(numStudents):
students[x] = (Student(names[x], (1101 + x), (gpas[rand]))) # constructor
print(students[x].getName(), students[x].getId(), students[x].getGpa())
#prompt user for input
key = input("\nEnter the first letter of student's name: ")
for x in range(len(students)):
studentsNames = [item for item in students if students[x].name[0] == key]
#print(studentsNames)
#print sorted list header
print("Students names starting with '{}'".format(key.upper()))
#loop through sorted list
for x in range(numStudents):
#end loop if no student's names matches user's input
if studentsNames == "":
print("NOT FOUND")
break
# end if statement
#print sorted list is student's name matches user's input, along with name's id and gpa
for name in studentsNames:
if name == students[x].name:
print(" Name: {} -> ID: {} -> GPA: {}".format(students[x].name, students[x].id, students[x].gpa))
# end if statement
# end for each loop
# end for loop
#message to user, ending program
print("Program Ended.")
Он должен напечатать: Имя: ... -> ID: ... -> GPA: ... где точки - это информация, полученная от «студентов».Но на нем напечатано: «Имена учеников, начинающиеся с« L », Программа завершена».
Пожалуйста, помогите.