如何按元组中的第一个元素对元组列表进行排序?

时间:2014-07-25 20:49:45

标签: jinja2

我有一个包含整数和日期时间对象的元组列表。我想按整数排序。例如:

list = (45, datetime.datetime(2014, 7, 25, 13, 20, 8, 332000)), (43, datetime.datetime(2014, 7, 25, 13, 17, 47, 873000)),...

目前我的代码不正确的是:

var sort = {{list|sort(reverse = True)}}

我看到jinja中有一个属性选项,但是无法使用它只按第一个元素排序。

2 个答案:

答案 0 :(得分:3)

我很高兴地发现您可以在没有自定义过滤器的情况下轻松完成此操作(请参阅source code)。您可以使用"。"指定多个属性。并使用数字索引处理数组/元组索引。

{% for assignment, submission in group|sort(attribute='0.name') %}
    {{ assignment.name }}
{% endfor %}

答案 1 :(得分:0)

一种略显苛刻但非常灵活的方法是传递一个函数来进行排序,如下所示:

context={
            'my_list':[(1, 'bar1'), (8, 'bar2'),(5, 'bar15'), (8, 'bar12'),(3, 'bar8'), (17, 'bar99')],
            'tup_sort':lambda tuples: sorted(tuples,key=lambda x: x[0])
            }
render_response('templates.html', **context)

然后在您的template.html中,您可以使用:

var sort = {{ tup_sort(my_list) }}