كيف يمكنني تصفية نتيجة سلسلة itertools ()؟
-
13-09-2019 - |
سؤال
في آرائي، إذا استوردت وحدة 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))
كيف يمكنني إذن طلب "Ourtags" من قبل "date_added"؟
غير مدلل،
ourtags = list(chain(franktags, amytags, timtags, erictags)).order_by('date_added')
إرجاع كائن "قائمة" لا يحتوي على خطأ "ترتيب الطلب".
المحلول
import operator
ourtags = sorted(ourtags, key=operator.attrgetter('date_added'))
نصائح أخرى
بهذه النقطة في التعليمات البرمجية، قمت بالفعل بتحميل جميع الكائنات في الذاكرة وفي قائمة. مجرد فرز القائمة مثلك ستؤدي أي قائمة بيثون القديمة.
>>> import operator
>>> ourtags.sort(key=operator.attrgetter('date_added'))
لا تنتمي إلى StackOverflow