[英]How to sort a list of dictionaries alphabetically in Jinja2
我的字典示例列表如下所示:
mydata = [{'data': [27, 3, 30, None, None], 'name': 'S1'}, {'data': [57.33, 6.37, 63.7, None, None], 'name': 'A2'}, {'data': [2349.62, 261.09, 2610.71, 0, 0], 'name': 'Total'}]
我想根据键name
按字母顺序对整个字典列表进行排序,但必须排除列表的最后一个元素,即名称为Total
。
名称为Total
的字典应该是列表的最后一个元素。
我该如何进行?
我试过类似下面的东西:
<div class="table-data">
<table class="table-theme">
<tr>
<th>Name</th>
{% for data in mydata |sort(attribute='0.name') %}
<th>{{ data["name"] }}</th>
{% endfor %}
</tr>
</table>
</div>
它没有按预期对数据进行排序。
另外如何在最后保留名为Total
的字典?
由于过滤器rejectattr
,您可以拒绝名称为Total
的元素,然后对结果列表进行排序。
然后, select 只有名称Total
的元素,使用筛选器selectattr
并将其添加回列表的末尾
鉴于:
{%- set mydata = [{'data': [2349.62, 261.09, 2610.71, 0, 0], 'name': 'Total'},
{'data': [27, 3, 30, None, None], 'name': 'S1'},
{'data': [57.33, 6.37, 63.7, None, None], 'name': 'A2'},]
-%}
{% for data in
mydata | rejectattr('name', '==', 'Total') | sort(attribute='name') | list
+ mydata | selectattr('name', '==', 'Total') | list
%}
{{ data["name"] }}
{% endfor %}
这产生:
A2
S1
Total
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.