擅长:python、mysql、java
<p>@Chris Krycho很好地解释了为什么事情会失败。</p>
<p>如果您查看OrderedDict的repr(),您会得到一个如何从一开始就传递顺序的提示:您需要使用(键、值)对的列表来保持列表中给定键的顺序。</p>
<p>我之前做过一个:</p>
<pre><code>>>> from collections import OrderedDict
>>> spamher = OrderedDict(s=6, p=5, a=4, m=3, h=2, e=1, r=0)
>>> spamher
OrderedDict([('h', 2), ('m', 3), ('r', 0), ('s', 6), ('p', 5), ('a', 4), ('e', 1)])
>>>
>>> list(spamher.keys())
['h', 'm', 'r', 's', 'p', 'a', 'e']
>>>
>>> spamher = OrderedDict([('s', 6), ('p', 5), ('a', 4), ('m', 3), ('h', 2), ('e', 1), ('r', 0)])
>>> list(spamher.keys())
['s', 'p', 'a', 'm', 'h', 'e', 'r']
>>>
</code></pre>
<p>(恰好在Python v3.3.0中,<code>spam</code>的原始示例从一开始就保持键的原始顺序。我改成了<code>spamher</code>来解决这个问题)。</p>