我有一个关于迭代的相当愚蠢的问题,我似乎无法得到正确的答案
我有一个表,其中包含用户每个月完成的测试的记录,如果他们错过了一个月,则表中没有记录
我想从表中提取用户的历史记录,然后为12个月中的每个月设置一个Y或N作为他们的完成状态
这是我的密码:
def getSafetyHistory(self, id):
results = []
safety_courses = UserMonthlySafetyCurriculums.objects.filter(users_id=id).order_by('month_assigned')
for i in range(1, 13):
for s in safety_courses:
if s.month_assigned == i:
results.append('Y')
else:
results.append('N')
return results
所以我的理想结果是一个有12个条目的列表,Y或N i、 e结果=[N,N,Y,N,N,Y,Y,Y,N,N,N,Y]
上面的查询为用户返回了2条记录,这是正确的,但是在我的迭代中,我不断地得到24条记录,显然是由于外部循环和内部循环,但是我不确定在没有大量嵌套循环的情况下,我应该以什么“pythonic”方式来执行
可能有很多方法可以做到这一点。这里有一个想法
看起来你只会得到已经完成的课程的记录。因此,您可以预先构建一个包含12个结果的列表,所有结果都设置为“否”,然后在查询数据库后,将与您得到的结果相对应的结果翻转为“是”
这假设
month_assigned
是一个介于1和12之间的整数,正如您的代码所提示的那样相关问题 更多 >
编程相关推荐