python循环似乎不遵循序列?

时间:2010-11-08 11:08:42

标签: python list dictionary for-loop

我觉得我在这里错过了一些明显的东西!

seq = {'a': ['1'], 'aa': ['2'], 'aaa': ['3'], 'aaaa': ['4'], 'aaaaa': ['5']}
for s in seq:
    print s

输出:

a
aa
aaaa
aaaaa
aaa

当然应该输出:

a
aa
aaa
aaaa
aaaaa

这里出了什么问题?

谢谢:)

3 个答案:

答案 0 :(得分:15)

不订购字典。如果你需要依赖于排序,你需要一个OrderedDict - 在Python 2.7的collections模块中有一个,或者你可以使用众多配方中的一个。

答案 1 :(得分:5)

标准Python字典不是有序的:无法保证返回密钥的顺序。

如果您希望按照创建密钥的顺序返回密钥,则可以使用OrderedDict from collections

或者,如果您希望输出按键的排序,则可以执行以下操作:

for s in sorted(seq):
    print s

答案 2 :(得分:1)

为什么不这样做(字典未订购):

for s in range(5):
    print 'a'*s

编辑:确定没问题:)

表达式为'a'*s,表示创建一个包含时间'a'的新字符串。

在python解释器中你可以玩它(不是python很棒:))

>>> print 'a'*2
aa
>>> print 'a'*3
aaa 

PS:如果你是python的新手我会建议你使用ipython如果你还没有使用它。