我如何过滤itertools chain()结果?

时间:2009-07-15 04:00:26

标签: python django django-views itertools

在我看来, 如果我导入一个itertools模块:

from itertools import chain

和我用它链接一些对象:

franktags = Frank.objects.order_by('date_added').reverse().filter(topic__exact='art') 
amytags = Amy.objects.order_by('date_added').reverse().filter(topic__exact='art') 
timtags = Tim.objects.order_by('date_added').reverse().filter(topic__exact='art') 
erictags = Eric.objects.order_by('date_added').reverse().filter(topic__exact='art')

ourtags = list(chain(franktags, amytags, timtags, erictags))

我如何通过“date_added”订购“ourtags”?

不是惊人的,

ourtags = list(chain(franktags, amytags, timtags, erictags)).order_by('date_added')

返回“'list'对象没有属性'order_by'”错误。

2 个答案:

答案 0 :(得分:13)

import operator

ourtags = sorted(ourtags, key=operator.attrgetter('date_added'))

答案 1 :(得分:5)

到目前为止,在代码中,您已经将所有对象加载到内存中并加载到列表中。只需像对待任何旧的Python列表一样对列表进行排序。

>>> import operator
>>> ourtags.sort(key=operator.attrgetter('date_added'))