Python jinja2:按定义的键顺序对dict排序?
假设我想显示如下数据:Python jinja2:按定义的键顺序对dict排序?,python,html,django,jinja2,Python,Html,Django,Jinja2,假设我想显示如下数据: • b is foo • a is bar • c is baz …但我的数据集看起来是这样的(或任何其他顺序,因为JSON不在乎): 我如何告诉Jinja2显示我的数据,并且按键总是按b a c顺序)?如果我不确定元素c是否总是存在该怎么办 我以为会是这样,但没有用: <ul> {% for key, value in my_dict.items()|dictsort(by=['b', 'a']) %} <li>{{ key }} is
• b is foo
• a is bar
• c is baz
…但我的数据集看起来是这样的(或任何其他顺序,因为JSON不在乎):
我如何告诉Jinja2显示我的数据,并且按键总是按b a c
顺序)?如果我不确定元素c
是否总是存在该怎么办
我以为会是这样,但没有用:
<ul>
{% for key, value in my_dict.items()|dictsort(by=['b', 'a']) %}
<li>{{ key }} is {{ value }}</li>
{% endfor %}
</ul>
{%表示键,my_dict.items()中的值| dictsort(by=['b','a'])%}
- {{key}}是{{value}
{%endfor%}
您可以循环浏览硬编码的钥匙列表:
{%用于输入('b','a','c')%}
{%if在my_dict%中输入密钥}
- {{key}}是{{my_dict[key]}
{%endif%}
{%endfor%}
如果
测试处理不存在的键。Python dict未排序,可能您可以从集合中使用:
import collections
my_dict = {
"a": "bar",
"b": "foo",
"c": "baz"
}
my_ord_dict = collections.OrderedDict(my_dict)
我想这已经到了。问题是,也许我应该修正我的问题,可能有一些元素我不能忽略。我是否可以从字典中“弹出”a
和b
,并返回到硬编码循环中未包含的其他循环的默认表示形式?@niteshade:您可以跳过循环中的a
和b
,并明确地首先列出它们?或者,您可以为键创建一个列表(list(my_dict)
)并对其进行操作,等等。我考虑过这一点,但不幸的是,我必须处理一个非常严格且不可预测的API。
import collections
my_dict = {
"a": "bar",
"b": "foo",
"c": "baz"
}
my_ord_dict = collections.OrderedDict(my_dict)