Python Sort Nested Dictionary by Multiple Values
Last Updated :
06 May, 2024
We are given a nested dictionary and our task is to sort a nested dictionary by multiple values in Python and print the result. In this article, we will see how to sort a nested dictionary by multiple values in Python.
Example:
Input : {'A': {'score': 85, 'age': 25},
'B': {'score': 92, 'age': 30},
'C': {'score': 78, 'age': 22}}
Output: {'C': {'score': 78, 'age': 22},
'A': {'score': 85, 'age': 25},
'B': {'score': 92, 'age': 30}}
Explanation : In above example, the nested dictionary is sorted by score in ascending order.
Python Sort Nested Dictionary by Multiple Values
Below are some of the ways by which we can sort a nested dictionary by multiple values in Python:
- Using sorted() function
- Using dictionary comprehension
- Using collections.OrderedDict()
- Using pandas library
Sort Nested Dictionary by Multiple Values Using sorted() Function
In this example, below Python code sorts a nested dictionary (`nested_dict`) by the 'score' values in the inner dictionaries, creating a new dictionary (`sorted_nested_dict`) that reflects the sorted order. The result is then printed.
Python
nested_dict = {'A': {'score': 85, 'age': 25},
'B': {'score': 92, 'age': 30},
'C': {'score': 78, 'age': 27}}
sorted_nested_dict = dict(sorted(nested_dict.items(), key=lambda x: (x[1]['score'])))
print(sorted_nested_dict)
Output{'C': {'score': 78, 'age': 27}, 'A': {'score': 85, 'age': 25}, 'B': {'score': 92, 'age': 30}}
Sort Nested Dictionary by Multiple Values Using Dictionary Comprehension
In this example, below Python code uses dictionary comprehension to sort the nested dictionary `nested_dict` based on the 'score' and 'age' values in the inner dictionaries. The result is stored in `sorted_nested_dict` and then printed.
Python
nested_dict = {'A': {'score': 85, 'age': 25},
'B': {'score': 92, 'age': 30},
'C': {'score': 78, 'age': 22}}
sorted_nested_dict = {k: v for k, v in sorted(nested_dict.items(), key=lambda x: (x[1]['score'], x[1]['age']))}
print(sorted_nested_dict)
Output{'C': {'score': 78, 'age': 22}, 'A': {'score': 85, 'age': 25}, 'B': {'score': 92, 'age': 30}}
Sort Nested Dictionary by Multiple Values Using collections.OrderedDict()
In this example, below Python code uses , the collections module `OrderedDict` is used to create a sorted version (`sorted_nested_dict`) of the nested dictionary `nested_dict`. The sorting is based on the 'score' and 'age' values in the inner dictionaries, and the result is then printed.
Python
from collections import OrderedDict
nested_dict = {'A': {'score': 85, 'age': 25},
'B': {'score': 92, 'age': 30},
'C': {'score': 78, 'age': 22}}
sorted_nested_dict = OrderedDict(sorted(nested_dict.items(), key=lambda x: (x[1]['score'], x[1]['age'])))
print(sorted_nested_dict)
OutputOrderedDict([('C', {'score': 78, 'age': 22}), ('A', {'score': 85, 'age': 25}), ('B', {'score': 92, 'age': 30})])
Sort Nested Dictionary by Multiple Values Using Pandas library
In this example, below Python code uses the Pandas library to convert the nested dictionary `nested_dict` into a DataFrame (`df`). Then, it sorts the DataFrame based on the 'score' and 'age' columns, creating `sorted_df`. Finally, it converts the sorted DataFrame back into a dictionary (`sorted_nested_dict`).
Python
import pandas as pd
nested_dict = {'A': {'score': 85, 'age': 25},
'B': {'score': 92, 'age': 30},
'C': {'score': 78, 'age': 22}}
df = pd.DataFrame.from_dict(nested_dict, orient='index')
sorted_df = df.sort_values(by=['score', 'age'])
sorted_nested_dict = sorted_df.to_dict(orient='index')
print(sorted_nested_dict)
Output{'C': {'score': 78, 'age': 22}, 'A': {'score': 85, 'age': 25}, 'B': {'score': 92, 'age': 30}}
Sort Nested Dictionary by Multiple Values Using itemgetter Function
In this example, we employ the itemgetter function from the operator module to sort the nested dictionary nested_dict based on specified keys, such as 'score' and 'age'.
Python
from operator import itemgetter
def sort_nested_dict(nested_dict, *keys):
sorted_items = sorted(nested_dict.items(), key=lambda x: itemgetter(*keys)(x[1]))
return {k: v for k, v in sorted_items}
nested_dict = {'A': {'score': 85, 'age': 25},
'B': {'score': 92, 'age': 30},
'C': {'score': 78, 'age': 22}}
sorted_nested_dict = sort_nested_dict(nested_dict, 'score', 'age')
print(sorted_nested_dict)
# Nikunj Sonigara
Output{'A': {'age': 25, 'score': 85}, 'C': {'age': 22, 'score': 78}, 'B': {'age': 30, 'score': 92}}
Similar Reads
Sort a Nested Dictionary by Value in Python
Sorting a nested dictionary in Python involves understanding its structure, defining sorting criteria, and utilizing the `sorted()` function or `.sort()` method with a custom sorting function, often a lambda. This process is essential for organizing complex, hierarchical data efficiently. Mastery of
3 min read
Sort Nested Dictionary by Value Python Descending
Sorting a nested dictionary in Python based on its values is a common task, and it becomes even more versatile when you need to sort in descending order. In this article, we'll explore some different methods to achieve this using various Python functionalities. Let's dive into more ways to efficient
3 min read
Sort Python Dictionary by Value
Python dictionaries are versatile data structures that allow you to store key-value pairs. While dictionaries maintain the order of insertion. sorting them by values can be useful in various scenarios. In this article, we'll explore five different methods to sort a Python dictionary by its values, a
3 min read
Python Get All Values from Nested Dictionary
In this article, we will learn how we can Get all Values from Nested Dictionary in Python Programming. A nested Dictionary in Python is a dictionary that contains another dictionary as its values. Using this, we can create a nested structure where each of the key-value pairs is in the outer dictiona
5 min read
Python - Nested Dictionary values summation
Sometimes, while working with Python dictionaries, we can have problem in which we have nested records and we need cumulative summation of it's keys values. This can have possible application in domains such as web development and competitive programming. Lets discuss certain ways in which this task
8 min read
Python - Sorted Nested Keys in Dictionary
Sometimes, while working with Python dictionaries, we can have a problem in which we need to extract all the keys of nested dictionaries and render them in sorted order. This kind of application can occur in domains in which we work with data. Lets discuss certain ways in which this task can be perf
4 min read
Python - Add Values to Dictionary of List
A dictionary of lists allows storing grouped values under specific keys. For example, in a = {'x': [10, 20]}, the key 'x' maps to the list [10, 20]. To add values like 30 to this list, we use efficient methods to update the dictionary dynamically. Letâs look at some commonly used methods to efficien
3 min read
Sorting Python Dictionary With Lists as Values
Python offers various methods to sort a dictionary with Lists as Values. This is a common task when dealing with data where you need to order elements based on different criteria. In this article, we will sort a dictionary with lists as values in Python. Sort a Dictionary with Lists as Values in Pyt
3 min read
Access Dictionary Values Given by User in Python
Dictionaries are a fundamental data structure in Python, providing a flexible way to store and retrieve data using key-value pairs. Accessing dictionary values is a common operation in programming, and Python offers various methods to accomplish this task efficiently. In this article, we will explor
4 min read
Get Dictionary Value by Key - Python
We are given a dictionary and our task is to retrieve the value associated with a given key. However, if the key is not present in the dictionary we need to handle this gracefully to avoid errors. For example, consider the dictionary : d = {'name': 'Alice', 'age': 25, 'city': 'New York'} if we try t
3 min read