<p><em>更新:</em>从Python 3.7开始,插入顺序保持不变,因此这里不需要<code>OrderedDict</code>。您可以使用下面的方法处理一个普通的<code>dict</code></p>
<blockquote>
<p><em>Changed in version 3.7:</em> Dictionary order is guaranteed to be insertion order. This behavior was an implementation detail of CPython from 3.6.</p>
</blockquote>
<p><a href="https://docs.python.org/3.7/library/stdtypes.html#dict.values" rel="noreferrer">source</a></p>
<hr/>
<p>Python3.6及更早版本*</p>
<p>如果你说的是一个正则的<code>dict</code>,那么“第一个键”并不意味着什么。这些钥匙没有以任何你可以依赖的方式订购。如果你在你的<code>dict</code>上迭代,你很可能不会第一眼看到<code>"banana"</code>。</p>
<p>如果您需要保持事物的有序,那么您必须使用<code>OrderedDict</code>,而不仅仅是一个普通的字典。</p>
<pre><code>import collections
prices = collections.OrderedDict([
("banana", 4),
("apple", 2),
("orange", 1.5),
("pear", 3),
])
</code></pre>
<p>如果您想按顺序查看所有键,可以通过迭代查看</p>
<pre><code>for k in prices:
print(k)
</code></pre>
<p>你也可以把所有的钥匙都列在一个单子里然后用它</p>
<pre><code>ks = list(prices)
print(ks[0]) # will print "banana"
</code></pre>
<p>在不创建列表的情况下获取<strong>第一个</strong>元素的更快方法是在迭代器上调用<code>next</code>。但是,当试图获取<code>nth</code>元素时,这并不能很好地概括</p>
<pre><code>>>> next(iter(prices))
'banana'
</code></pre>
<p><sub>*CPython在3.6中保证了作为实现细节的插入顺序。</sub></p>