通过Python字典的顺序循环给出问题

通过Python字典的顺序循环给出问题,python,associative-array,Python,Associative Array,可能重复: 有一个非常奇怪的Python问题,我正试图回答这个问题(在SO上,但看起来作者删除了它)。这让我大吃一惊,我似乎无法合理地解释自己这一令人困惑的现象背后的原因。 我有一个Python字典(关联数组),我初始化如下 d = {"word1": 1, "word2": 2, "word3": 3} 并使用for..in构造循环遍历它,在该构造中,我打印由空格分隔的“d”键。 预期输出:word1 word2 word3 实际输出:word1 word3 word2 然后我尝试将“d”

可能重复:

有一个非常奇怪的Python问题,我正试图回答这个问题(在SO上,但看起来作者删除了它)。这让我大吃一惊,我似乎无法合理地解释自己这一令人困惑的现象背后的原因。 我有一个Python字典(关联数组),我初始化如下

d = {"word1": 1, "word2": 2, "word3": 3}
并使用for..in构造循环遍历它,在该构造中,我打印由空格分隔的“d”键。 预期输出:word1 word2 word3
实际输出:word1 word3 word2

然后我尝试将“d”打印为

打印d 输出

{'word1': 1, 'word3': 3, 'word2': 2} {'word1':1,'word3':3,'word2':2} 我当时正在浏览在线Python文档、现有的调查问卷、博客,但完全没有找到原因。我是不是遗漏了什么?此外,对于所有投票反对这个问题的人,有一个善意的请求,请他们详细说明同样的原因


干杯。:-)

Python字典中的键未排序

for key in sorted(d):
    print key,

按预期打印
word1 word2 word3

Python
dict
不保证其键的任何特定顺序


保留其键的插入顺序。

来自文档:

最好将字典视为一组无序的键:值对,要求键是唯一的(在一个字典中)。一对大括号创建一个空字典:{}。将逗号分隔的键:值对列表放在大括号内,将初始键:值对添加到字典中;这也是在输出上编写词典的方式

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

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


最后一段说明了一切。

-1。精化:你围绕主题跳舞,但你从不说预期输出与实际输出之间有什么问题。问题出在顺序上。谷歌或在“python”、“order”、“dictionary”中搜索,很快就能找到答案。@StevenRumbalski:谢谢。我是个蠢货:(我投票决定以完全相同的方式结束这个问题。非常感谢所有愿意在这里发表评论的人。)
for key in sorted(d):
    print key,