You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jinja2 dictsort过滤器无法按字典子元素name字段排序如何解决

问题原因

你调用dictsort的参数传递方式不符合Jinja2的过滤器语法要求:
dictsort默认按字典的键排序,你直接传入'name'作为第一个参数,实际上对应dictsort的第一个reverse布尔参数,根本没有指定按照值的name字段排序,所以实际是按照字典的键1、2、3、4的顺序遍历,才会出现你看到的错误排序结果。

正确实现方式

方法1:使用dictsort显式指定排序规则

需要同时指定按值排序,以及按值的name属性排序:

{%- for thing, property in things|dictsort(by='value', attribute='name') %}
  foo "{{ property.name }}" bar
{%- endfor %}

方法2:提取字典值后用sort排序(更简洁)

如果不需要用到字典的键,直接提取所有值后按name字段排序即可:

{%- for property in things.values()|sort(attribute='name') %}
  foo "{{ property.name }}" bar
{%- endfor %}

输出结果

两种写法都会得到按name升序排序的正确结果:

foo afoo bar
foo bfoo bar
foo cfoo bar
foo zfoo bar

内容的提问来源于stack exchange,提问作者Preston

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 10:39:02