A random order is not unordered. Unordered means there is no defined way the data would be ordered i.e. the insertion order or the data does not have any correlation with how the data is arranged.
The reason the data is always in a predictable order because it so happened that the particular implementation have chosen to always arrange the elements in a manner such that the order of insertion dictates the data ordering. But, there is no guarantee# that would happen and we do see this deviating in Python 3.X dictionary implementation.
Note Even if we see that the data is sorted,
>>> {1,2,3,4,5}
set([1, 2, 3, 4, 5])
we would still call it unordered, unless the documents strictly says so and provides guarantee of its order or there may be surprises waiting for you. I have seen implementations which relied on the fact that sets and dictionaries maintained ordered based in insertion pattern. Such implementations has serious consequences when they were ported to Python 3.X.
#
What’s New In Python 3.3
Security improvements:
Hash randomization is switched on by default.