我构建了这样的数据结构:
{ level: [ event1, event2... ] }
level
是以下之一:C(代表临界)、H(代表高)、M(代表中)、L(代表低)。在
我想根据级别打印django模板中的所有事件,首先是C(临界),然后是H(高)、M(中)、L(低)。但是,默认情况下,我有:
^{pr2}$我想先把字典打印出来吗?还是应该将其转换为其他数据结构?谢谢。在
编辑: 我认为史蒂夫的方法很管用。它将字典转换为列表,字典的每个条目都成为一个元组:
[ (level1: [event1, event2 ...]), (level2: [event3, event4 ...]) ]
字典没有排序,因此需要先将它们转换为元组列表:
分类如下:
然后传入排序后的_dictionary变量,并以与之前相同的方式循环:
^{pr2}$对重要声明的进一步解释:
dictionary.items()
给你一个元组列表,代表你原来的字典。所以不用像这样的字典:如果为字典中的每个键/值对提供元组列表:
你可以把元组看作是一个不能更改的列表(据说它是“不可变的”)。在
然后将这个元组列表传递给
sorted
函数。对于列表中的每个元组,sorted()
调用我们提供的lambda表达式来请求排序键。我们的lambda表达式只需获取元组中的第一个元素(即severity值),并访问level_values
字典来查找它的排序值。在您可以逐个遍历结果
sorted_dictionary
(它是一个元组列表)中的一个元组:或者Python将允许您自动将tuble拆分为单独的变量:
Python
dict
没有排序。您需要将其转换为一个列表,并对其进行排序。在然后在模板中:
^{pr2}$或者,对于原始数据结构,只需循环查看每个类别:
你需要把它转换成其他的数据结构。最简单的方法是将已经排序的列表列表
[low_levels, medium_levels, high_levels]
或您喜欢的任何方式传递到模板中,而不是使用字典。如果可以的话,也可以用它来表示事件。在相关问题 更多 >
编程相关推荐