Python词典中的键顺序

rec*_*gle 81 python dictionary

码:

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

print l
Run Code Online (Sandbox Code Playgroud)

这打印['a','c','b'].我不确定方法如何确定l中关键字的顺序.但是,我希望能够以"正确"的顺序检索关键字.正确的顺序当然会创建列表['a','b','c'].

Eug*_*ash 77

Python 3.7+

在Python 3.7.0中,dict对象的插入顺序保存性质已被声明为Python语言规范的官方部分.因此,你可以依赖它.

Python 3.6(CPython)

从Python 3.6开始,对于Python的CPython实现,字典默认维护插入顺序.这被认为是一个实现细节; collections.OrderedDict如果你想要在其他Python实现中保证插入排序,你仍然应该使用它.

Python> = 2.7和<3.6

collections.OrderedDict当您需要时,请使用该类dict记住插入的项目的顺序.

  • 这应该是公认的答案。 (2认同)

Abh*_*pta 70

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

另外,请注意,OrderedDict({'a': 1, 'b':2, 'c':3})由于dict您创建的{...}内容已经忘记了元素的顺序,因此无效.相反,你想要使用OrderedDict([('a', 1), ('b', 2), ('c', 3)]).

如文档中所述,对于低于Python 2.7的版本,您可以使用配方.

  • 请记住,OrderedDict的顺序是*insertion*order; 如果以这种方式插入键,键只会按字母顺序排列. (13认同)

Mik*_*wis 43

>>> print sorted(d.keys())
['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)

使用sorted函数,对传入的iterable进行排序.

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

  • 如果您想要原始订单并且未对其进行排序,则此操作无效. (11认同)

Dre*_*rew 12

只需在您想要使用它时对列表进行排序.

l = sorted(d.keys())
Run Code Online (Sandbox Code Playgroud)


小智 12

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

"字典对象的keys()方法以任意顺序返回字典中使用的所有键的列表(如果你想对它进行排序,只需将sorted()函数应用于它)."