限制来自排序方法的输出

2024-09-30 03:23:02 发布

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

如果我的观点代码是:

arttags = sorted(arttags, key=operator.attrgetter('date_added'), reverse=True)

将结果限制为50个标记的参数是什么?在

我假设:

^{pr2}$

不正确。在

更完整的代码如下:

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)

Tags: key代码addeddatetopicbyobjectsorder
3条回答

我相信你想要的是一个take。来自the itertools documentation

def take(n, iterable):
    "Return first n items of the iterable as a list"
    return list(islice(iterable, n))

你可能会发现一个切片适合你:

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

关于heapq.nlargest:
从定义的数据集中返回一个包含n个最大元素的列表iterable.key,如果提供,则指定一个由一个参数组成的函数,该函数用于从iterable中的每个元素提取比较键:key=str.lower Equivalent to: 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]

相关问题 更多 >

    热门问题