我是python的新手,所以非常感谢简化的解释!
截至目前,我的字典看起来像这样:
names = {'Bob Smith': ['5', '6', '7', '5'], 'Fred Jones': ['8', '5', '7', '5', '9'], 'James Jackson': ['5','8','8','6','5']}
我需要做以下事情:
到目前为止,我在if语句中附上了以下内容:
if method == 2:
for scores in names.items():
score = scores[-1,-2,-3]
average = sum(int(score)) / float(3)
print(average)
我也看了this线程,但我仍然卡住了。
任何人都可以给我一些指示吗?
答案 0 :(得分:3)
Scores[-1,-2,-3]
没有获得最后三个元素。它获取字典中键(-1,-2,-3)
的元素,这会在列表的情况下引发错误。 Scores[-3:]
将获得最后三个元素。
获得分数时,您需要使用names.values()
代替names.items()
int
类型构造函数中的python字符串到整数转换不够智能,无法处理字符串列表,只能处理单个字符串。使用map(int,score)
或int(i) for i in score
可以解决这个问题。
变量score
也是元素列表名称极差的选择。
答案 1 :(得分:0)
names = {'Bob Smith': ['5', '6', '7', '5'], 'Fred Jones': ['8', '5', '7', '5', '9'], 'James Jackson': ['5','8','8','6','5']}
def avg(l):
l = list(map(int,l))
return sum(l[-3:])/3
avgs = []
for each in names.values():
avgs.append(avg(each))
avgs.sort(reverse=True)
print avgs
输出:
[7, 6, 6]
答案 2 :(得分:0)
在Python3.4 +中,有一个统计模块
>>> names = {'Bob Smith': ['5', '6', '7', '5'], 'Fred Jones': ['8', '5', '7', '5', '9'], 'James Jackson': ['5','8','8','6','5']}
>>> import statistics
>>> sorted((statistics.mean(map(int, x[-3:])) for x in names.values()), reverse=True)
[7.0, 6.333333333333333, 6.0]