1

因此,当您在字典中打印键值对时,它们是否以任何特定顺序打印?(Python)

4

3 回答 3

2

会有一个订单(必须有),但不能保证每次的订单都是一样的。如果您需要对结果进行排序,请使用OrderedDict或在列表中单独对数据进行排序。

于 2013-10-02T08:49:35.773 回答
1

顺序将取决于您在字典中添加和删除项目的确切顺序。它还取决于 Python 的版本,在最新版本的 Python 中,它甚至可能在应用程序的不同运行中有所不同。

例如,Python 2.7:

>>> dict.fromkeys("abi")
{'a': None, 'i': None, 'b': None}
>>> dict.fromkeys("iba")
{'i': None, 'a': None, 'b': None}

但是 Python 3.3:

>>> dict.fromkeys("abi")
{'a': None, 'b': None, 'i': None}

并再次在 Python 3.3 中,但在重新启动解释器后:

>>> dict.fromkeys("abi")
{'b': None, 'a': None, 'i': None}

你应该避免陷入认为有秩序的陷阱。在旧版本的 Python 中,您实际上可以计算出期望的顺序,但是基于此的任何代码都只是自找麻烦。这里最常见的陷阱可能是在编写 doctests 时:很容易编写一个 doctest 断言字典的顺序,然后当顺序更改时您的代码会失败。

于 2013-10-02T09:25:03.300 回答
0

字典通常是无序的,但这只是在理解它没有按照你设定的方式排序的情况下。Python 将它们打乱,以便它可以使用哈希表比通过列表或元组更快地搜索键。

这意味着字典确实有顺序,但不是很明显,也不需要用户理解。

于 2013-10-02T08:47:49.477 回答