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

3 python django django-views python-itertools

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

from itertools import chain
Run Code Online (Sandbox Code Playgroud)

我用它链接一些对象:

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))
Run Code Online (Sandbox Code Playgroud)

我如何通过"date_added"订购"ourtags"?

不要惊讶,

ourtags = list(chain(franktags, amytags, timtags, erictags)).order_by('date_added')
Run Code Online (Sandbox Code Playgroud)

返回"'列表'对象没有属性'order_by'"错误.

Ale*_*lli 13

import operator

ourtags = sorted(ourtags, key=operator.attrgetter('date_added'))
Run Code Online (Sandbox Code Playgroud)


Fog*_*ird 5

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

>>> import operator
>>> ourtags.sort(key=operator.attrgetter('date_added'))
Run Code Online (Sandbox Code Playgroud)