按索引获取字典中的有序键

Gab*_*iel 2 python dictionary python-2.7

这看起来应该是一件相当简单的事情,但我一直无法做到。假设我有一本字典,例如:

d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
Run Code Online (Sandbox Code Playgroud)

我想按照字典中存储的顺序访问键。我本来希望这能起作用:

print d.keys()[0]
banana
Run Code Online (Sandbox Code Playgroud)

但实际结果是:

orange
Run Code Online (Sandbox Code Playgroud)

显然这是因为python 中的字典是无序的。我尝试过使用collections.OrderedDict

from collections import OrderedDict as odict
d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
print odict(d).keys()
Run Code Online (Sandbox Code Playgroud)

但结果是一样的。

我怎样才能做到这一点?考虑到执行这项任务的明显复杂性,我应该这样做吗?我还能如何按顺序访问字典中的键?

fal*_*tru 5

来源不应该是字典。使用其他保证顺序的序列(列表、元组、..):

>>> from collections import OrderedDict as odict
>>> d = [('banana', 3), ('apple', 4), ('pear', 1), ('orange', 2)]
>>> print odict(d).keys()
['banana', 'apple', 'pear', 'orange']
Run Code Online (Sandbox Code Playgroud)