Django queryset Resu上的Python选择

2024-05-28 20:35:59 发布

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

我需要对django queryset结果进行排序(前五个大值)

我正在按选择排序

def sortTopFive(allPois):                   # selection sort
    res=[]
    for i in range(0,4):
            large =allPois[i]
            for ele in range(i, len(allPois)):
                    if allPois[ele]['count']>=large['count']:
                            ele, large = large , ele
                    else :
                            continue
            res[i]=large
    return res

所有的[i]['count']都是整数

我得到的错误是

'int' object is unsubscriptable

这个问题可能太蠢了,我是python新手


Tags: djangoinfor排序defcountrangeres
2条回答

为什么不在查询本身中这样做呢

示例

This will get them ordered by price for example desc
Module.objects.all().order_by("-price")

或者

#If you want to remove duplicates just do this
Module.objects.all().order_by("-price").distinct('price')
#or limit results to 5
Module.objects.all().order_by("-price").distinct('price')[:5]

这个代码有很多很多错误。一些显而易见的问题:

  • 交换elelarge实际上对列表没有任何作用,它只是将名称ele重新绑定到以前的large上,但是该名称会立即反弹到列表中的下一个元素;

  • res[i]将给您一个索引器,因为列表是空的;您可能需要执行res.append(i)

然而,除非你把它作为一个算法学习练习,否则我完全不知道你为什么要这么做。Python有一个非常好的内置sort()函数,它的效率比您的代码高很多倍——除此之外,Django的querysets本身还支持直接在数据库中排序,这甚至更好。你知道吗

相关问题 更多 >

    热门问题