2013-09-12 2 views
0

У меня есть необходимость сортировать мой Джанго QuerySet результат (первые пять больших значений)выбор 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 

все [я] [ 'графа «] является целым числом

ошибки, что я получаю

'int' object is unsubscriptable 

этот вопрос может быть слишком думами b, я новичок в python

ответ

0

В этом коде есть много, много чего не так. Некоторые из очевидных:

  • Перестановка ele и large на самом деле не делать ничего в список, он просто выполняет повторную привязку имени ele к тому, что было ранее large, но это имя, то сразу отскок к следующему элементу список в любом случае;

  • res[i] предоставит вам IndexError, потому что список пуст; вы, вероятно, захотите сделать res.append(i).

Однако, если вы не выполняете это как упражнение по изучению алгоритмов, я не знаю, почему вы хотите это сделать вообще. У Python есть отличная встроенная функция sort(), которая во много раз более эффективна, чем ваш код, и, кроме того, сами запросы запросов Django поддерживают сортировку непосредственно в базе данных, что еще лучше.

+0

я делаю заказ на 2 пункта, на сегодняшний день (ASC) и подсчета (DESC), и теперь мне нужно подсчет (DESC) для общего наивысшего счета –

0

Почему вы не делаете, что в самом запросе

Пример

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] 
+0

Я делаю заказ по 2 элементам, за дату (ASC) и счету (DESC) теперь мне нужно count (DESC) –

Смежные вопросы