擅长:python、mysql、java
<p>我只需要用每个组的最大值填充一个字典,然后按组最大值和个人分数排序。像这样:</p>
<pre><code>data = [
(5 , 0.85, "Europe"),
(8 , 0.77, "Australia"),
(12, 0.70, "S.America"),
(13, 0.71, "Australia"),
(42, 0.82, "Europe"),
(45, 0.90, "Asia"),
(65, 0.91, "Asia"),
(73, 0.72, "S.America"),
(77, 0.84, "Asia")
]
maximums_by_group = dict()
for indx, score, group in data:
if group not in maximums_by_group or maximums_by_group[group] < score:
maximums_by_group[group] = score
data.sort(key=lambda e: (maximums_by_group[e[2]], e[1]), reverse=True)
for indx, score, group in data:
print indx, score, group
</code></pre>
<p>这将产生</p>
^{pr2}$