我感觉我在这里漏掉了一些显而易见的东西!
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
这里出了什么问题?
我感觉我在这里漏掉了一些显而易见的东西!
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
字典是无序的。如果您需要依赖顺序,您需要一个有序字典 - Python 2.7中的collections
模块中有一个,或者您可以使用周围的许多配方之一。
标准 Python 字典是无序的:不能保证按照哪种顺序返回键。
如果你想按照创建键的顺序返回键,可以使用来自 collections
的 OrderedDict
。
或者,如果你想按照键的值对输出进行排序,可以使用以下方法:
for s in sorted(seq):
print s
for s in sorted(seq, key=len):
- John La Rooy为什么你不这样做(字典是无序的):
for s in range(5):
print 'a'*s
编辑:好的,随你便 :)
问题在于表达式:'a'*s
,它的意思是创建一个新字符串,其中包含 s 次 'a'。
在 Python 解释器中,您可以尝试一下(Python 真是太棒了 :))
>>> print 'a'*2
aa
>>> print 'a'*3
aaa
提示:如果你是 Python 的新手,我建议你使用 ipython(如果你还没有使用过的话)。