我正在尝试在 Django 中创建一个目录,queryset
如下所示:
def get_toc(self):
toc = {}
qs = self.get_queryset()
idx = set()
for q in qs:
idx.add(q.title[0])
idx = list(idx)
idx.sort()
for i in idx:
toc[i] = []
for q in qs:
if q.title[0] == i:
toc[i].append(q)
return toc
但是它有时间复杂度O(n^2)
。有没有更好的方法呢?
更新 我的意思是词汇表,而不是目录。
这看起来不像是目录,而是词汇表,您可以在其中将术语的第一个字符映射到术语列表。
我们可以在这里使用[python-doc]:
.groupby(…)
我相信这相当于上面的,但应该更快,因为它使用数据库引擎进行排序和重复数据删除:
无需遍历 中每个项目的所有查询,而是将其作为最外层且唯一的循环
idx
进行迭代,将每个查询添加到适当的存储桶中。如下所示:qs
for