2 回答

TA貢獻2037條經驗 獲得超6個贊
您可以students使用稱為列表理解的方法獲取字典中每個學生的分數列表。從中計算平均值應該相當容易。
for student in students.values():
scores = [score for (assignment, score) in student['Assignments']]
average = ...

TA貢獻1887條經驗 獲得超5個贊
這是在 Python 3 中解決它的一種方法。使用functools.reduce:
from functools import reduce
# Assuming you have a dictionary students
students = {'student_1': {'Assignments': [('Assignment_1', 3),
('Assignment_2', 4),
('Assignment_3', 2),
('Assignment_4', 4)],
'first_name': 'Alex',
'id': 1009,
'last_name': 'Robertson'},
'student_2': {'Assignments': [('Assignment_1', 2),
('Assignment_2', 1),
('Assignment_3', 2),
('Assignment_4', 4)],
'first_name': 'Dave',
'id': 2009,
'last_name': 'Robertson'}}
# Iterate over dictionary's values
for v in students.values():
# lambda to calculate average - just a helper
l = lambda lst: reduce(lambda a, b: a + b, lst) / len(lst)
# Comprehend the values from tuples in dictionary
# - you know the values are at index 1 of the tuple
values = [i[1] for i in v[list(v.keys())[0]]]
# Calculate the average for extracted values
average = l(values)
# Round to second digit
r = round(average, 2)
# Output the result
print("Average {}".format(r))
您可以進一步修改它以更符合您的需求。
添加回答
舉報