不同Python字典中的键顺序()

时间:2012-03-20 19:55:06

标签: python dictionary

  

可能重复:
  Python dictionary, keep keys/values in same order as declared

如果我在一个特定的程序中有两个不同的字典,它们具有相同的键(但值不同),那么.keys()的顺序是否相同?我做了一些测试,似乎是这样,但不知道dict的内部我怎么不确定这是否有保证。

谢谢,

5 个答案:

答案 0 :(得分:10)

你根本不能依赖关键顺序:

>>> {1: None, 9: None}
{1: None, 9: None}
>>> {9: None, 1: None}
{9: None, 1: None}
>>> {1: None, 2: None}
{1: None, 2: None}
>>> {2: None, 1: None}
{1: None, 2: None}

字典无序。在Python 2.7中,虽然有collections.OrderedDict

答案 1 :(得分:3)

Python语言无法保证。

CPython解释器的实现可能在某些过去的版本中以相同的顺序返回了键,但是要修复security vulnerability,这在当前版本和未来版本中是非常不保证的。

答案 2 :(得分:2)

将键/项保持为相同顺序的策略适用于两个不同的字典对象,不应该被认为是保留。

答案 3 :(得分:1)

如果订单很重要,您应该使用OrderedDicthttp://docs.python.org/dev/library/collections.html#collections.OrderedDict。插入或删除键值对时,字典中键的顺序可能会发生变化。

此外,顺序可能因Python语言的不同实现而异,因此您不能依赖于相同的顺序。

答案 4 :(得分:0)

Python中的常规字典不是有序的,您不能依赖于键的顺序。

在Python 2.7中他们引入了OrderedDict。该对象按照插入顺序存储密钥。

如果您使用的是Python 2.6或更低版本,则可以使用http://pypi.python.org/pypi/ordereddict

来实现相同的功能