In one of the latest versions of the interpreter, the internal mechanics of the dictionary has been updated. This was done to reduce the memory occupied by the dictionary, but one of the side effects was maintaining order.
However, you need to understand that this is just a side effect, which is present only in some versions of a particular interpreter.
If you write a program that implies that the dictionary must maintain its order, then it will not work correctly on older versions of the interpreter, or on other interpreters, and perhaps even in some future versions of the interpreter.
Therefore, if it is important for your program that the dictionary maintains order, it is recommended to use OrderedDict - it guarantees that order is maintained on other interpreters.