How to sort dictionaries in python based on the keys?

0 votes
125 views
asked Aug 6, 2016 by Hitesh Garg (127 points)  

I have to sort a dictionary based on its values. I have a data of states and all its ministers in a dictionary and I want to sort a dictionary based on the states, how should I do this?
My data is like this -

x  = {'Delhi': ['name1', 'name2'],
     'Uttar Pradesh': ['name1'],
     'Tamil Nadu': ['name2'],
     'Assam': ['name3', 'name1']}

1 Answer

+1 vote
answered Nov 10, 2016 by Rahul Singh (153 points)  
selected Nov 24, 2016 by Hitesh Garg
 
Best answer

Since dictionary is a collection of randomly arranged pair of key and value you can not actually sort a dictionary itself but yes you can have a sorted view of the dictionary.
Possibly a list generated from the entries in a dictionary.

For example

import operator

x = {'Delhi': ['capital', 'state'],
     'Uttar Pradesh': "population",
     'Tamil Nadu': ['southern'],
     'Assam': ['mountains']}

# To sort dict based on values
sorted_x = sorted(x.items(), key=operator.itemgetter(1))
print(sorted_x)

# To sort dict based on KEYS
sorted_x = sorted(x.items(), key=operator.itemgetter(0))
print(sorted_x)

This has both the solution on how to sort the dictionary based on either key or values.
This returns a list of tuples.

This can be done using lambda functions in the following way -

x = {'Delhi': ['capital', 'state'],
     'Uttar Pradesh': "population",
     'Tamil Nadu': ['southern'],
     'Assam': ['mountains']}

# To sort dict based on KEYS
sorted_x = sorted(x.items(), key=lambda x: x[0])
print(sorted_x)

# To sort dict based on VALUES
sorted_x = sorted(x.items(), key=lambda x: x[1])
print(sorted_x)

Complete working example - http://ideone.com/KzAeG5

Hope it helps.

Welcome to Codingeek Q&A, where you can ask questions and receive answers from other members of the community.
...