Ответ 1
Словари не упорядочены. Если вам нужно полагаться на заказ, вам нужен OrderedDict - там один в модуле collections
в Python 2.7, или вы можете использовать один из многих рецептов.
Я чувствую, что мне не хватает чего-то очевидного здесь!
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
что здесь не так?
спасибо:)
Словари не упорядочены. Если вам нужно полагаться на заказ, вам нужен OrderedDict - там один в модуле collections
в Python 2.7, или вы можете использовать один из многих рецептов.
Стандартные словари Python не упорядочены: нет гарантии того, в каком порядке будут возвращены ключи.
Если вы хотите, чтобы ваши ключи вернулись в том порядке, в котором вы создаете ключи, вы можете использовать OrderedDict
из collections
.
В качестве альтернативы, если вы хотите, чтобы ваш результат сортировался по значениям клавиш, следующее:
for s in sorted(seq):
print s
почему вы этого не делаете (словарь не упорядочен):
for s in range(5):
print 'a'*s
Изменить: ok, так как вы:)
вещь находится в выражении: 'a'*s
, что означает создание новой строки, которая содержит время s 'a'.
в интерпретаторе python вы можете играть с ним (не питон замечательный:))
>>> print 'a'*2
aa
>>> print 'a'*3
aaa
PS: если вы новичок в python, я предлагаю вам использовать ipython, если вы еще не используете его.