Данные хранятся в списке, элементами которого являются словари, где каждый словарь содержит данные для одного учащегося: идентификационный номер учащегося, имя субъекта, а также количество баллов, которые он / она набрал за каждый из два частичных экзамена, соответственно. Формат каждого словаря следующий:
{'ID' : _IDnumber_, 'subject' : _'Artificial Intelligence'_, 'Partial Exam 1' : _points1_, 'Partial Exam 2' : _points2_}
Теперь мне нужно определить функцию sum_partials()
, которая получает один аргумент - список словарей, содержащих данные учеников (как описано выше), и возвращает тот же список, но измененный таким образом, что каждый словарь будет содержать только общий балл (т. е. сумма баллов) частичных экзаменов вместо баллов за два частичных экзамена.
Ex. Результат:
[{'ID': 12217, 'subject': 'Artificial Intelligence', 'Total score': 55}, {'ID': 13022, 'subject': 'Artificial Intelligence', 'Total score': 85}, {'ID': 13032, 'subject': 'Artificial Intelligence', 'Total score': 47}]
Я сделал это с помощью функции редактирования каждого учащегося, функцию которой я вызываю как выражение в понимании списка:
def sum_partials(results):
# your code here
def update_student(student):
partial_exam1 = student['Partial Exam 1']
partial_exam2 = student['Partial Exam 2']
student.pop('Partial Exam 1')
student.pop('Partial Exam 2')
student['Total score'] = partial_exam1 + partial_exam2
return student
return [update_student(student) for student in results]
Он отлично работает, но я новичок в Python, и мне интересно, смогу ли я изменить свой код !? Есть ли решение сделать это в одной строке, используя только списочные или вложенные списочные?
Я имею в виду, чтобы делать все, что мне нужно, без функции update_student()
, а только с помощью list comprehensions
?