循环似乎不按顺序进行
我感觉我这里好像漏掉了什么明显的东西!
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 个回答
1
为什么你不这样做(字典是无序的):
for s in range(5):
print 'a'*s
补充:好的,随你 :)
这里的关键在于表达式:'a'*s
,这意味着创建一个新的字符串,这个字符串里面有 s 个 'a'。
在 Python 解释器里你可以试试这个(Python 真的很棒 :))
>>> print 'a'*2
aa
>>> print 'a'*3
aaa
PS:如果你是 Python 新手,我建议你使用 ipython,如果你还没用过的话。
5
标准的Python字典是无序的:这意味着你不能保证键(key)返回的顺序。
如果你想要键按照你创建的顺序返回,可以使用来自 collections
的 OrderedDict
。
另外,如果你想根据键的 值 来排序输出,可以使用下面的方式:
for s in sorted(seq):
print s
15
字典是没有顺序的。如果你需要保持顺序,就得用有序字典(OrderedDict)。在Python 2.7的collections
模块里就有这个东西,或者你也可以找一些其他的做法来实现。