擅长:python、mysql、java
<p>似乎您要做的是使用sort()。python的sort按字典顺序对元组进行排序,也就是说,如果第一项是相同的,它将检查第二项(等等…)</p>
<pre><code>def rank_teams():
rank = []
# iterate through teams and create a tuple with most important to least important
# sort params. team bust be the last object
for team in Team.objects.all():
points = 0
best_goal_gap = 0
best_goals = 0
best_away_goals = 0
all_victories = 0
for game in TeamGame.objects.filter(team_name=team):
points += {'w':3, 'd':1, 'l':0}[game.result]
best_goal_gap = max(best_goal_gap, game.goals_hit-game.goals_get)
best_goals = max(best_goals, game.goals_get)
if game.field == 'o':
best_away_goals = max(best_away_goals, game.goals_get)
if game.result == 'w':
all_victories +=1
rank.append((points, best_goal_gap, best_goals, best_away_goals, all_victories, team))
#sort the teams
rank.sort()
team_rank = [team for p,g,b,a,v,team in rank]
return team_rank
</code></pre>
<p>此函数将返回一个按您希望的顺序(根据第一个要点)排序的团队对象列表。在</p>