Jinja2中的sort filter有可能先後依次對一個列表進行排序,然後再由另一個屬性進行排序?這似乎是一件很自然的事情,但在我的測試中,前面的排序完全不穩定,所有的排序都丟失了。Jinja2中的穩定排序
我已經在python中先排序,然後再將列表傳遞給模板,但我想知道是否可以在Jinja2中對「stable」進行排序。
我應用濾波器的方法是,像這樣:
{{ item_list|sort(attribute='value')|sort(attribute='color') }}
果然不出我所希望看到的是列表中color
排序,共享由value
排序的色彩元素。相反,它看起來好像從未發生過value
。
例如,從這個名單:
2 red
3 blue
3 red
2 blue
1 blue
4 red
我想是這樣的:
1 blue
2 blue
3 blue
2 red
3 red
4 red
我看着groupby過濾器,但該實現似乎過於複雜(將嵌套的for循環需要)。
的Jinja2將列表傳遞給第一排序函數和排序'value'。然後將返回的列表傳遞給第二個排序函數,並再次按'color'排序。很明顯,這與僅僅通過'color'排序列表一樣好,所以第一類被'覆蓋' – RedBaron 2013-04-22 08:59:58
@RedBaron我相信你錯過了,在這個例子中,你可以擁有共享顏色的元素,但是有不同的價值。我將添加一個示例輸出來澄清。 – ford 2013-04-22 09:05:41