可能重复:
Python dictionary, keep keys/values in same order as declared
如果我在一个特定的程序中有两个不同的字典,它们具有相同的键(但值不同),那么.keys()的顺序是否相同?我做了一些测试,似乎是这样,但不知道dict的内部我怎么不确定这是否有保证。
谢谢,
答案 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)
如果订单很重要,您应该使用OrderedDict
:http://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
来实现相同的功能