Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 限制排序方法的输出_Python_Django_Itertools - Fatal编程技术网

Python 限制排序方法的输出

Python 限制排序方法的输出,python,django,itertools,Python,Django,Itertools,如果我的视图代码为: arttags = sorted(arttags, key=operator.attrgetter('date_added'), reverse=True) 将结果限制为50个标记的参数是什么 我假设: .... limit=50) 这是不正确的 更完整的代码如下: videoarttags = Media.objects.order_by('date_added'),filter(topic__exact='art') audioarttags = Audio.ob

如果我的视图代码为:

arttags = sorted(arttags, key=operator.attrgetter('date_added'), reverse=True)
将结果限制为50个标记的参数是什么

我假设:

.... limit=50)
这是不正确的

更完整的代码如下:

videoarttags = Media.objects.order_by('date_added'),filter(topic__exact='art') 
audioarttags = Audio.objects.order_by('date_added'),filter(topic__exact='art') 
conarttags = Concert.objects.order_by('date_added'),filter(topic__exact='art') 
arttags = list(chain(videoarttags, audioarttags, conarttags)) 
arttags = sorted(arttags, key=operator.attrgetter('date_added'), reverse=True) 
如何合并——

itertools.islice(sorted(...),50)

您可能会发现切片适合您:

arttags = sorted(arttags, key=operator.attrgetter('date_added'), reverse=True)[:50]

您可能会发现切片适合您:

arttags = sorted(arttags, key=operator.attrgetter('date_added'), reverse=True)[:50]

我相信,你想要的是一个
接受
。发件人:


我相信,你想要的是一个
接受
。发件人:

关于:
返回由iterable定义的数据集中n个最大元素的列表。key(如果提供)指定一个参数的函数,用于从iterable中的每个元素提取比较键:
key=str。lower等效于:sorted(iterable,key=key,reverse=True)[:n]

>>> from heapq import nlargest
>>> data = [1, 3, 5, 7, 9, 2, 4, 6, 8, 0]
>>> nlargest(3, data)
[9, 8, 7]
关于:
返回由iterable定义的数据集中n个最大元素的列表。key(如果提供)指定一个参数的函数,用于从iterable中的每个元素提取比较键:
key=str。lower等效于:sorted(iterable,key=key,reverse=True)[:n]

>>> from heapq import nlargest
>>> data = [1, 3, 5, 7, 9, 2, 4, 6, 8, 0]
>>> nlargest(3, data)
[9, 8, 7]

我想我是找错人了。我试图实现的实际上是非常简单的使用模板过滤器(切片),我不知道我能做到。 守则如下:

{% for arttag in arttags|slice:":50" %}

是的,我觉得自己很蠢,但我很高兴我完成了:——)

我想我是找错人了。我试图实现的实际上是非常简单的使用模板过滤器(切片),我不知道我能做到。 守则如下:

{% for arttag in arttags|slice:":50" %}


是的,我觉得自己很愚蠢,但我很高兴我完成了:-)

您可能还希望向每个
对象.order\u by.filter
调用添加[:50]。这样做意味着您只需在Python中对内存中的150个项目进行排序,而不必再对更多的项目进行排序。

您可能还需要向每个
对象.order\u by.filter
调用添加[:50]。这样做意味着您只需在Python中对内存中的150个项目进行排序,而不必对更多的项目进行排序。

sorted()不是itertools过滤器——它返回一个简单的列表,而不是迭代器My Error。在前一行代码中,我使用itertools将一组标记链接到“arttags”中。我错误地认为我也在使用itertools排序过滤器。@kjarsenal,不可能以面向流的方式进行排序:在看到所有传入项之前,您甚至无法生成第一个结果项(因为您看到的最后一个可能是第一个生成的项!),当然,itertools只做面向流的事情。排序过滤器可以工作。我只需要知道如何限制结果。sorted()不是一个itertools过滤器——它返回一个简单的列表,而不是迭代器my error。在前一行代码中,我使用itertools将一组标记链接到“arttags”中。我错误地认为我也在使用itertools排序过滤器。@kjarsenal,不可能以面向流的方式进行排序:在看到所有传入项之前,您甚至无法生成第一个结果项(因为您看到的最后一个可能是第一个生成的项!),当然,itertools只做面向流的事情。排序过滤器可以工作。我只需要知道如何限制结果。是的,我也这么认为,但没有效果。这在什么方面不起作用?如果您提到itertools,如果您想要一个迭代器,请尝试
itertools.islice(排序(…),50)
代码如下:videoarttags=Media.objects.order\u by('date\u added')、filter(topic\u exact='art')、audioarttags=Audio.objects.order\u by('date\u added')、filter(topic\u exact='art')、conarttags=conart=Concert.objects.order\u by('date\u added')、filter(topic_uuuexact='art')arttags=list(chain(videoarttags,audioarttags,conarttags))arttags=sorted(arttags,key=operator.attrgetter('date_uadded'),reverse=True)如何合并–itertools.islice(sorted(…),50)@kjarsenal,请编辑您的问题,将此代码放在那里(注释中的所有流程都不可读)为了修复问题的标题(因为itertools与排序无关)。是的,我也这么认为,但没有任何效果。这在什么方面不起作用?你提到itertools,如果你想要一个迭代器,请尝试
itertools.islice(sorted(…),50)
代码看起来像这样:videoarttags=Media.objects.order\u by('date\u added'),filter(topic\uu-exact='art')audioarttags=Audio.objects.order\u by('date\u added')、filter(topic\uu-exact='art')conarttags=Concert.objects.order\u by('date\u added')、filter(topic\uu-exact='art')arttags=list(chain(videoarttags,audioarttags,conarttags))arttags=sorted=sorted(arttags,key=operater.attgetter('date\u added')、reverse如何合并–itertools.islice(sorted(…),50)@kjarsenal,请编辑您的问题,将此代码放在那里(无法阅读,全部在注释中流动),并修复问题的标题(因为itertools与sorted无关)。无法理解如何使用模块在django视图中实现它。无法理解如何使用模块在django视图中实现它。这可能是仅获取前几个排序元素的最快方法。这正是我所建议的。这可能是仅获取前几个排序元素的最快方法.这正是我的建议。