Результат хеширования нескольких значений варьируется в зависимости от значений:
иногда порядок, кажется, сохраняется: следующий пример с d_one
, порядок:не соблюдается: следующий пример с d_two
Вера в то, что ордер в любом случае соблюдается, объясняется только тем, что вас обманывают особые случаи, когда ордер явно сохраняется
d_one = {}
for i,x in enumerate((122,'xo','roto',885)):
print x
d_one[x] = i
print
for k in d_one:
print k
print '\n=======================\n'
d_two = {}
for i,x in enumerate((122,'xo','roto','taratata',885)):
print x
d_two[x] = i
print
for k in d_two:
print k
result
122
xo
roto
885
122
xo
roto
885
=======================
122
xo
roto
taratata
885
122
taratata
xo
roto
885
Кстати, то, что вы называете "элементами словаря", обычно называют "элементами словаря" (отсюда методы items () и iteritems () словаря)