7

有没有python代码

for key in dict:
    ...

dictdict数据类型在哪里,总是以固定的顺序迭代,并注意key?例如,假设dict={"aaa":1,"bbb",2},上面的代码是否总是先让key="aaa"然后key="bbb"(或以另一个固定的顺序)?顺序可能是随机的吗?我在 ubuntu 13 中使用 python 3.3,假设这个运行环境没有改变。谢谢你。

补充一点:多次运行时,变量dict保持不变,即生成一次,多次读取。

4

2 回答 2

10

从本质上讲,字典没有存储键的顺序。所以你不能依赖订单。(即使环境相同,我也不会假设顺序不变)。

为数不多的可靠方法之一:

for key in sorted(yourDictionary.keys()):
    # Use as key and yourDictionary[key]

编辑:回复您的评论:Python 不会以随机方式存储密钥。所有文档都说,你不应该依赖这个 order。这取决于实现如何对键进行排序。关于你的问题,我在这里要说的是:如果你依赖这个命令,你可能做错了什么。一般来说,你应该/根本不需要依赖这个。:-)

于 2013-10-10T06:23:58.037 回答
5
CPython implementation detail: Keys and values are listed in an arbitrary 
order which is non-random, varies across Python implementations, and 
depends on the dictionary’s history of insertions and deletions.

欲了解更多信息:http ://docs.python.org/2/library/stdtypes.html#dict.items

更重要的是,您可以使用collections.OrderedDict来固定订单。

于 2013-10-10T06:27:42.227 回答