擅长:python、mysql、java
<p>Python假设3</p>
<p>在第二个<code>for</code>循环中,如果在计算平均值的同时打印它们,则不可能按所需的顺序打印它们。你需要把它分成两个阶段。在</p>
<p>计算平均分:</p>
<pre><code>avg_user_scores = {
user: sum(map(float, scores))/len(scores)
for user, scores in user_scores.items()
}
</code></pre>
<p>然后按降序打印:</p>
^{pr2}$
<p><code>operator.itemgetter(1)</code>是获取元组的第二个元素(即<code>lambda t: t[1]</code>)的一种方法,即平均得分。在</p>
<hr/>
<p>整个项目:</p>
<pre><code>from collections import defaultdict, deque
from operator import itemgetter
user_scores = defaultdict(lambda: deque(maxlen=3))
with open('highscores.csv') as file:
for line in file:
name, score = line.split(',')
user_scores[name].append(float(score))
avg_user_scores = {
user: sum(scores) / len(scores)
for user, scores in user_scores.items()
}
for name, score in sorted(avg_user_scores.items(), key=itemgetter(1), reverse=True):
print(name, score)
</code></pre>