Django设置操作更快还是for循环?

2024-10-01 02:26:15 发布

您现在位置:Python中文网/ 问答频道 /正文

以下哪个操作更快?在

使用for循环:

 OrgIdChoices = []
 Orgid_used_choices = [(choice["organization_id"])for choice in list(Organization.objects.all().values("organization_id"))]   #Gets used ID's
 OrgIdAvailChoices  = [ "%c%c" % (x, y) for x in range(ord('A'), ord('Z')+1) for y in range(ord('A'), ord('Z')+1)]  #Gets available ID's
 for i in OrgIdAvailChoices:
      if not i in Orgid_used_choices:
          OrgIdChoices.append((i,i))   #Generates OrgIdAvailChoices which are not in Orgid_used_choices

或使用设置操作:

^{pr2}$

Tags: inidfornotrangeusedchoicesgets
1条回答
网友
1楼 · 发布于 2024-10-01 02:26:15

看看QuerySet API documentation,更准确地说是values_list部分(带有flat=True)和{}部分。当然,这将比values更快,提取所需字段并转换为list或{}方法。在

之后,使用查询集生成集合OrgIdAvailChoices和{}的简单方法应该比您建议的方法快得多。在

或者,受Pannu的评论启发,使用itertools的方法:

import itertools
import string

filter(
    lambda x: x not in OrgIdAvailChoices,
    [''.join(el) for el in itertools.combinations_with_replacement(string.ascii_uppercase, 2)]
)

说实话,我不确定QuerySet是否真的是一个集合,也就是说,如果在其中搜索是对数的,但根据我的经验,正确使用Django的ORM(如我的答案开头所述)将给您带来最大的加速。在

相关问题 更多 >