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

Python 按索引获取字典中的有序键,python,python-2.7,dictionary,Python,Python 2.7,Dictionary,这似乎是一件相当简单的事情,但我一直无法做到。假设我有一本字典,比如: d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2} 我想按存储在字典中的相同顺序访问这些键。我本以为这会奏效: print d.keys()[0] banana 但实际结果是: orange 显然这是因为在python中。我试过使用: 但结果是一样的 我该怎么做?考虑到执行这项任务的明显复杂性,我不应该这样做吗?否则如何才能按顺序访问字典中的键?源不应是字典。使用保

这似乎是一件相当简单的事情,但我一直无法做到。假设我有一本字典,比如:

d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
我想按存储在字典中的相同顺序访问这些键。我本以为这会奏效:

print d.keys()[0]
banana
但实际结果是:

orange
显然这是因为在python中。我试过使用:

但结果是一样的


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

源不应是字典。使用保证顺序列表、元组等的其他序列:

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

源不应是字典。使用保证顺序列表、元组等的其他序列:

>>> from collections import OrderedDict as odict
>>> d = [('banana', 3), ('apple', 4), ('pear', 1), ('orange', 2)]
>>> print odict(d).keys()
['banana', 'apple', 'pear', 'orange']
当您尝试OrderedICT时,您仍然包括常规dict的构造,在构造过程中,该dict的内部顺序可能与代码中键入的顺序不同,因此将导致构造的OrderedICT的顺序也不同

如果您按顺序添加项目,而不是通过无序的dict一次添加所有项目,那么OrderedDict将按照您的预期工作

from collections import OrderedDict
d = OrderedDict()

d['banana'] = 3
d['apple'] = 4
d['pear'] = 1
d['orange'] = 2

print d.keys()
或者从顺序数据类型开始,如果您确实想要类似dict的行为:

In [127]: d = OrderedDict([('banana',3), ('apple',4), ('pear',1), ('orange',2)])

In [128]: d
Out[128]: OrderedDict([('banana', 3), ('apple', 4), ('pear', 1), ('orange', 2)])

In [129]: d.keys()
Out[129]: ['banana', 'apple', 'pear', 'orange']
当您尝试OrderedICT时,您仍然包括常规dict的构造,在构造过程中,该dict的内部顺序可能与代码中键入的顺序不同,因此将导致构造的OrderedICT的顺序也不同

如果您按顺序添加项目,而不是通过无序的dict一次添加所有项目,那么OrderedDict将按照您的预期工作

from collections import OrderedDict
d = OrderedDict()

d['banana'] = 3
d['apple'] = 4
d['pear'] = 1
d['orange'] = 2

print d.keys()
或者从顺序数据类型开始,如果您确实想要类似dict的行为:

In [127]: d = OrderedDict([('banana',3), ('apple',4), ('pear',1), ('orange',2)])

In [128]: d
Out[128]: OrderedDict([('banana', 3), ('apple', 4), ('pear', 1), ('orange', 2)])

In [129]: d.keys()
Out[129]: ['banana', 'apple', 'pear', 'orange']

您将按照在字典中存储的顺序获取密钥。那个顺序和你期望的完全不同。键的存储顺序不一定与您指定字典的顺序相同。您是按照键在字典中的存储顺序获取键的。那个顺序和你期望的完全不同。键的存储顺序不一定与指定字典的顺序相同。