擅长:python、mysql、java
<p>你把平均值排序的那一行是没有必要的——毕竟这些都是一个人的分数,你用什么顺序求和并不重要。您要做的是在计算所有平均值后对所有条目进行排序,因此您需要收集这些条目。如果要根据平均值对它们进行排序,请使用一个tuple,其中average作为第一个字段,这样sorted将完全满足您的需要:</p>
<pre class="lang-py prettyprint-override"><code># The list that will hold the pairs of
# average score and name
avgs = []
# Your initial loop
for name in user_scores:
x = user_scores[name]
# Just collect the pair
avgs.append((sum(x) / float(len(x)), name)
# Now sort it
avgs = sorted(avgs)
# Print it
for avg, name in avgs:
print (name, avg)
</code></pre>
<p>然而,一种更为Python式的方法是理解列表:</p>
^{pr2}$
<p>这假设您使用的是python3,而python2则使用<code>iteritems()</code>或{<cd2>}</p>