python以什么顺序显示字典键?

Jac*_*jjc 18 python

>>> D = {'a': 1, 'b': 2, 'c': 3}
>>> D
{'a': 1, 'c': 3, 'b': 2}
Run Code Online (Sandbox Code Playgroud)

我只是在Python shell中做了这个,我只是想知道为什么键'c'会在键'b'之后?

Len*_*bro 17

订单与内部工作方式以及最终在哈希表中的顺序有关.这又取决于键哈希值,它们的插入顺序以及您正在使用的Python实现.

订单是任意的(但不是随机的),知道它将是哪个订单永远不会有用.

要获得已排序的键列表,只需使用sorted(D),在您的情况下将返回['a', 'b', 'c'].


Fáb*_*niz 7

在Python 2.7中,您可以使用Ordered Dict.


Joh*_*web 5

文档:

最好将字典视为一组无序的键:值对,并要求键是唯一的(在一个字典中).

  • 明确表示订单可以随时更改.这样可以更快地实现.如果您需要特定顺序的密钥,则可以对它们进行排序. (2认同)
  • QQending:无序意味着(除其他外)你输出的顺序可能不是你输入的顺序,那么为什么pythons的行为会让人困惑?如果你想知道为什么它做了除"排序"顺序以外的其他事情,dicts使用哈希表,而不是搜索树.排序可能基于密钥mod的散列,表格的当前大小或同样不可预测的东西. (2认同)