![](/img/trans.png)
[英]AttributeError: 'list' object has no attribute 'values' python select query
[英]AttributeError: 'list' object has no attribute 'values' in Python
我想计算每个学生的总成绩。 在名为 midterm_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' object has no attribute 'values'
错误再清楚不过了。 每个v
都是每个列表,因此您试图获取列表没有的属性( .values()
),因此请尝试仅对每个列表使用sum
:
dct_sum = {k: sum(v) for k, v in grades.items()}
此外,这是使用toolz.dicttoolz.valmap
的好场景:
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}
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}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.