How to reverse order of keys in python dict? How to reverse order of keys in python dict? python python

How to reverse order of keys in python dict?


The order keys are iterated in is arbitrary. It was only a coincidence that they were in sorted order.

>>> a = {0:'000000',1:'11111',3:'333333',4:'444444'}>>> a.keys()[0, 1, 3, 4]>>> sorted(a.keys())[0, 1, 3, 4]>>> reversed(sorted(a.keys()))<listreverseiterator object at 0x02B0DB70>>>> list(reversed(sorted(a.keys())))[4, 3, 1, 0]


Since Python 3.7 dicts preserve order, which means you can do this now:

my_dict = {'a': 1, 'c': 3, 'b': 2}for k in reversed(list(my_dict.keys())):    print(k)

Output:

bca

Since Python 3.8 the built-in reversed() accepts dicts as well, thus you can use:

for k in reversed(my_dict):    print(k)


Dictionaries are unordered so you cannot reverse them. The order of the current output is arbitrary.

That said, you can order the keys of course:

for i in sorted(a.keys(), reverse=True):    print a[i];

but this gives you the reverse order of the sorted keys, not necessarily the reverse order of the keys how they have been added. I.e. it won't give you 1 0 3 if your dictionary was:

a = {3:'3', 0:'0', 1:'1'}