我想计算每个学生的整体成绩。将整体成绩添加到名为“ termterm_grades”的新词典中,以学生作为关键字,而整体成绩作为(整数)值。
grades = {
"studentA" : [5, 2, 3, 1, 2, 4, 5, 5, 1, 1],
"studentB" : [1, 2, 5, 5, 2, 0, 1, 5, 5, 2],
"studentC" : [2, 5, 5, 5, 5, 0, 1, 3, 1, 0],
"studentD" : [0, 1, 0, 5, 2, 5, 1, 3, 3, 5],
"studentE" : [5, 4, 5, 5, 1, 5, 1, 4, 4, 5],
"studentF" : [2, 2, 1, 1, 1, 3, 1, 3, 0, 1],
"studentG" : [5, 5, 5, 5, 5, 4, 3, 5, 3, 1],
}
dct_sum = {k: sum(v.values()) for k, v in grades.items()}
但是,Python会抛出一条错误消息:AttributeError:'list'对象没有属性'values'
答案 0 :(得分:3)
该错误无法清除。每个v
都是每个列表,因此您试图获取列表没有的属性(.values()
),因此请尝试对每个列表仅使用sum
:
dct_sum = {k: sum(v) for k, v in grades.items()}
此外,这是使用gaussian_kde
的好方案:
from toolz.dicttoolz import valmap
dct_sum = valmap(sum,grades)
两个输出:
dct_sum
{'studentA': 29,
'studentB': 28,
'studentC': 27,
'studentD': 25,
'studentE': 39,
'studentF': 15,
'studentG': 41}
答案 1 :(得分:0)
v
已经是键k
的值列表。总结一下
>>> dct_sum = {k: sum(v) for k, v in grades.items()}
>>> dct_sum
{'studentA': 29, 'studentB': 28, 'studentC': 27, 'studentD': 25, 'studentE': 39, 'studentF': 15, 'studentG': 41}