在 3.6 之前的 Python 版本中,不保证字典中键的顺序。在迭代字典或访问其键时,这可能会导致意外结果。
要理解此问题,请考虑以下代码:
d = {'a': 0, 'b': 1, 'c': 2} l = d.keys() print(l)
在此示例中,keys() 方法返回字典中键的列表。但是,不保证列表中键的顺序。在 Python 2.7 及更早版本中,键按插入顺序返回。但是,从 Python 3.0 开始,键以任意顺序返回。
如果您依赖字典中键的顺序,这种不一致可能会出现问题。例如,如果您使用字典来存储购物清单中的项目,则您可能希望按照将它们添加到字典中的顺序返回键。然而,在Python 3.0版本开始,这是不保证的。
要解决这个问题,有两种选择。第一个是使用collections.OrderedDict类。这个类提供了对插入顺序的保证。代码展示了如何使用OrderedDict:
from collections import OrderedDict d = OrderedDict([('a', 0), ('b', 1), ('c', 2)]) l = list(d.keys()) print(l) # ['a', 'b', 'c']
另一个选择是使用sorted()函数对key进行升序排序。但是,这需要额外的步骤,并且可能并不总是所需的行为。
对于 Python 3.6 及更高版本,字典默认保持插入顺序。但是,如果您需要跨不同 Python 实现保证插入顺序,仍然建议使用 OrderedDict。
以上是为什么旧 Python 版本中的字典键并不总是有序的?的详细内容。更多信息请关注PHP中文网其他相关文章!