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()函数)。