Python字典中的按键顺序

码:

d = {'a': 0, 'b': 1, 'c': 2} l = d.keys() print l 

这将打印['a','c','b']。 我不确定方法如何确定l中关键字的顺序。 不过,我希望能够以“正确”的顺序检索关键字。 正确的顺序当然会创build列表['a','b','c']。

你可以使用OrderedDict (需要Python 2.7)或更高版本。

另外请注意, OrderedDict({'a': 1, 'b':2, 'c':3})将不起作用,因为您使用{...}创build的dict已经忘记了元素的顺序。 相反,你想使用OrderedDict([('a', 1), ('b', 2), ('c', 3)])

正如在文档中提到的,对于低于Python 2.7的版本,您可以使用这个配方。

 >>> print sorted(d.keys()) ['a', 'b', 'c'] 

使用sorting函数 ,对传入的迭代进行sorting。

.keys()方法以任意顺序返回键。

只要您想要使用它时对列表进行sorting。

 l = sorted(d.keys()) 

从Python 3.6开始,字典默认保持插入顺序 。 但是,维护订单还没有“保证”(可能会在3.7):

这个新实现的顺序保留方面被认为是一个实现细节,不应该被依赖(这可能会在将来发生变化,但是希望在改变语言规范之前在几个版本中使用这个新的dict实现语言为所有当前和未来的Python实现指定保留顺序的语义;这也有助于保持随机迭代顺序仍然有效的老版本语言的向后兼容性,例如Python 3.5)。

所以截至目前,你仍然应该使用collections.OrderedDict如果你想有一个有序的字典。

http://docs.python.org/tutorial/datastructures.html

“字典对象的keys()方法以任意顺序返回字典中使用的所有关键字的列表(如果您想对其进行sorting,只需对其应用sorted()函数)。