关于列表:python循环似乎不遵循序列?

python looping seems to not follow sequence?

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

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

输出:

1
2
3
4
5
a
aa
aaaa
aaaaa
aaa

当它肯定会输出:

1
2
3
4
5
a
aa
aaa
aaaa
aaaaa

这里怎么了?

谢谢)


字典未排序。如果您需要依赖于订单,那么您需要一个已订购的dict—在python 2.7中的collections模块中有一个,或者您可以使用周围许多食谱中的一个。


标准的python字典没有排序:不能保证返回的键的顺序。

如果您希望按创建密钥的顺序返回密钥,则可以使用来自collectionsOrderedDict

或者,如果要根据键的值对输出进行排序,则可以执行以下操作:

1
2
for s in sorted(seq):
    print s


为什么不这样做(字典没有排序):

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

编辑:按您的意愿确定:)

表达式中的内容是:'a'*s,这意味着创建一个包含s时间"a"的新字符串。

在python解释器中,您可以使用它(python很棒吧:)

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

附言:如果你对python还不熟悉,我建议你使用i python。