Skip to content Skip to sidebar Skip to footer

Can Internal Dictionary Order Change?

exampleDict = {'a':1, 'b':2, 'c':3, 'd':4} The above dictionary initially iterated through in this order: b=2 d=4 a=1 c=3 Then, I moved around a ton of files in my code, and now

Solution 1:

Dict don't have a fixed order, from documentation

CPython implementation detail: Keys and values are listed in an arbitrary order which is non-random, varies across Python implementations, and depends on the dictionary’s history of insertions and deletions.

If you really need to keep it ordered, there is an object called OrderedDict :

from collections importOrderedDictexampleDict= OrderedDict({'a':1, 'b':2, 'c':3, 'd':4})

see also OrderedDict documentation here

Solution 2:

Curious about why you want them ordered. Any chance it's just for consistent logging/printing or similar? If so, you can sort the keys alphabetically. See other article: How to sort dictionary by key in numerical order Python

Solution 3:

Yes. If you do change the code between different calls to the dict, the order of iteration will change.

From the docs

If items(), keys(), values(), iteritems(), iterkeys(), and itervalues() are called with no intervening modifications to the dictionary, the lists will directly correspond.

If the order of insertion matter, check out the OrderedDict class

Post a Comment for "Can Internal Dictionary Order Change?"