如何过滤itertools链(chain())的结果?
在我看来,
如果我导入了一个叫做 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 个回答
5
到这里,你已经把所有的对象都加载到内存里,并放进了一个列表中。接下来,就像处理任何普通的Python列表一样,对这个列表进行排序就可以了。
>>> import operator
>>> ourtags.sort(key=operator.attrgetter('date_added'))
14
import operator
ourtags = sorted(ourtags, key=operator.attrgetter('date_added'))
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。