2012-05-22 47 views
-1

可能重复:
In what order does python display dictionary keys?连续环流式给人的问题

有我试图回答(对SO,但看起来像笔者这个非常奇怪的Python的问题删除它)。这让我头晕目眩,我似乎无法合理解释自己究竟是什么原因可能导致这种fl phenomenon现象。 我有一个Python字典(关联数组),我初始化如下。

d = {"word1": 1, "word2": 2, "word3": 3} 

并使用for..in结构遍历它,其中我打印由空格分隔的“d”键。 预期输出:WORD1 WORD2 WORD3
实际输出:WORD1 WORD3 WORD2

我然后试图打印 “d” 为

 print d

输出

{'word1': 1, 'word3': 3, 'word2': 2}

我正在扫描在线Python文档,关于SO的现有调查问卷,博客,但完全是fa试图找出原因。我在这里错过了什么吗?此外,所有对这个问题投票反对的人请求详细说明原因。

干杯。 :-)

+3

-1。详细说明:你围绕主题跳舞,但你永远不会说预期产出与实际产出有何不同。问题在于*顺序*。谷歌或在stackoverflow中搜索“python”,“order”,“dictionary”,答案很快就找到了。 –

+0

@StevenRumbalski:谢谢。我是一个愚蠢的屁股:( – verisimilitude

+1

我投票结束这个问题作为一个确切的副本。非常感谢所有谁在这里发表/评论:) – verisimilitude

回答

4

从文档:

最好是认为一个字典作为一个无序的关键的:值对,该密钥是唯一的要求(一个字典之内)。一对大括号创建一个空字典:{}。在大括号中放置一个以逗号分隔的键:值对列表,可将初始键:值对添加到字典中;这也是字典写在输出上的方式。

字典上的主要操作是用某个键存储一个值,并提取给定键的值。也可以使用del删除一个key:value对。如果您使用已在使用的密钥进行存储,则与该密钥关联的旧值将被遗忘。使用不存在的键提取值是错误的。

字典对象的keys()方法以任意顺序返回字典中使用的所有键的列表(如果您想对其进行排序,只需对其应用sorted()函数)。要检查字典中是否有单个密钥,请使用in关键字。

http://docs.python.org/tutorial/datastructures.html

最后一段说明了一切。

+0

谢谢你。 – verisimilitude

4

Python字典中的键未排序。

for key in sorted(d): 
    print key, 

打印word1 word2 word3如预期。