<p>字典没有排序,因此需要先将它们转换为元组列表:</p>
<p>分类如下:</p>
<pre><code>level_values = {'C':0, 'H':1, 'M':2, 'L':3}
sorted_dictionary = sorted(dictionary.items(), key=lambda x: level_values[x[0]])
</code></pre>
<p>然后传入排序后的_dictionary变量,并以与之前相同的方式循环:</p>
^{pr2}$
<p><strong>对重要声明的进一步解释:</strong></p>
<pre><code>sorted_dictionary = sorted(dictionary.items(), key=lambda x: level_values[x[0]])
</code></pre>
<p><code>dictionary.items()</code>给你一个元组列表,代表你原来的字典。所以不用像这样的字典:</p>
<pre><code>{'A':[1,2,3], 'B',[4,5,6]}
</code></pre>
<p>如果为字典中的每个键/值对提供元组列表:</p>
<pre><code>[('A', [1,2,3]), ('B', [4,5,6])]
</code></pre>
<p>你可以把元组看作是一个不能更改的列表(据说它是“不可变的”)。在</p>
<p>然后将这个元组列表传递给<code>sorted</code>函数。对于列表中的每个元组,<code>sorted()</code>调用我们提供的lambda表达式来请求排序键。我们的lambda表达式只需获取元组中的第一个元素(即severity值),并访问<code>level_values</code>字典来查找它的排序值。在</p>
<p>您可以逐个遍历结果<code>sorted_dictionary</code>(它是一个元组列表)中的一个元组:</p>
<pre><code>for value in sorted_dictionary:
print value[0]
print str(value[1])
</code></pre>
<p>或者Python将允许您自动将tuble拆分为单独的变量:</p>
<pre><code>for severity, events in sorted_dictionary:
print severity
print str(events)
</code></pre>