0
我目前正在优化我的一些项目中的代码,并发现一些非常慢的代码。我有一个通过Django查询获得的对象列表。我想过滤这个列表并只返回一个对象,因为这些值是唯一的。从Django模型对象列表中过滤对象的最佳方法
questions = set(Question.object.all())
choices = set(Choice.objects.select_related('question').filter(question__in=questions).all())
for question in questions:
Answer(question=question,
choice=next(filter(lambda x: x.question == question), choices)),
response=response)
其中一些只是伪代码,但真正的问题是在next()函数中。有没有更快的方法来查找一组中的元素?使用列表理解是无可争议的,因为它解析整个列表并返回所有元素。 Filter是一个生成器,next()返回它找到的第一个值。
我使用Django 1.7和Python 3.4
谢谢!
谢谢!加快了很多。 – 2015-03-19 12:28:17