列表理解与过滤

时间:2014-02-04 21:45:03

标签: python django

我在django有一个模特,其中一个人每场比赛有1-6轮的结果。我正试图让他所有的战斗,然后轮流排序。但是,有些轮次被忽略了:

results = self.objects.filter(boxer)
fight_results = []
for r in results:
   result = sorted([x for x in results if x.fight_id == r.fight_id],key=lambda r: -r.round)
   fight_results.append(result)

我做错了什么?

编辑:只是为了澄清,对于每场战斗,在数据库中有1到6个具有相同fight_id但不同的整数的条目。我只想把它们全部搞定,添加到列表中并按轮数排序

1 个答案:

答案 0 :(得分:0)

在不知道fightsrounds的类/数据结构的情况下,很难理解您要做的事情。根据您的描述,在我看来,正在排序的列表理解是错误地使用results。查看传递给tp sorted的密钥,它应该引用特定结果中的战斗,因此应该是这样的:

result = sorted([x for x in r.fights if x.fight_id == r.fight_id],key=lambda r: -r.round)