开发者

Looping seems to not follow sequence

I feel like I'm missing something obvious here!

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

outputs:

a
aa
aaaa
aaaaa
aaa

Whereas surely it should out开发者_运维技巧put:

a
aa
aaa
aaaa
aaaaa

What's going wrong here?


Dictionaries are not ordered. If you need to rely on the ordering, you need an OrderedDict - there's one in the collections module in Python 2.7, or you can use one of the many recipes around.


Standard Python dictionaries are not ordered: there is no guarantee on which order the keys will be returned.

If you want your keys returned in the order in which you create keys you can use an OrderedDict from collections.

Alternatively, if you want your output sorted on the values of the keys the following would do:

for s in sorted(seq):
    print s


why you don't do (dictionary are not ordered):

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

Edit : ok as you which :)

the thing is in the expression : 'a'*s which mean create a new string which contain s time 'a'.

in the python interpreter you can play with it (isn't python wonderful :) )

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

PS: if you're new to python i will suggest that you use ipython if you don't use it yet.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜