Open In App

Python – Convert dictionary to K sized dictionaries

Last Updated : 27 Apr, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Given a Dictionary, divide dictionary into K sized different dictionaries list.

Input : test_dict = {‘Gfg’ : 1, ‘is’ : 2, ‘best’ : 3, ‘for’ : 4, ‘geeks’ : 5, ‘CS’ : 6}, K = 3 
Output : [{‘Gfg’: 1, ‘is’: 2, ‘best’: 3}, {‘for’: 4, ‘geeks’: 5, ‘CS’: 6}] 
Explanation : Divided into size of 3 keys. 

Input : test_dict = {‘Gfg’ : 1, ‘is’ : 2, ‘best’ : 3, ‘for’ : 4}, K = 2 
Output : [{‘Gfg’: 1, ‘is’: 2}, {‘best’: 3, ‘for’: 4}] 
Explanation : Divided into size of 2 keys.

Method 1: Using loop

In this, we iterate for all the keys in dictionary using loop and bifurcate according to size  and append to new list.

Python3




# Python3 code to demonstrate working of
# Convert dictionary to K Keys dictionaries
# Using loop
 
# initializing dictionary
test_dict = {'Gfg' : 1, 'is' : 2, 'best' : 3, 'for' : 4, 'geeks' : 5, 'CS' : 6}
 
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
 
# initializing K
K = 2
 
res = []
count = 0
flag = 0
indict = dict()
for key in test_dict:
    indict[key] = test_dict[key]       
    count += 1
     
    # checking for K size and avoiding empty dict using flag
    if count % K == 0 and flag:
        res.append(indict)
         
        # reinitializing dictionary
        indict = dict()
        count = 0
    flag = 1
     
 
# printing result
print("The converted list : " + str(res))


Output

The original dictionary is : {'Gfg': 1, 'is': 2, 'best': 3, 'for': 4, 'geeks': 5, 'CS': 6}
The converted list : [{'Gfg': 1, 'is': 2}, {'best': 3, 'for': 4}, {'geeks': 5, 'CS': 6}]

Time Complexity: O(n*n), where n is the length of the list test_dict
Auxiliary Space: O(n) additional space of size n is created where n is the number of elements in the res list

Method 2: Using dictionary comprehension

Step-by-step approach:

  • Initialize a dictionary called test_dict with key-value pairs.
  • Print the original dictionary using the print() function.
  • Set the value of K to the desired number of keys per dictionary.
  • Use dictionary comprehension to create a list of dictionaries. Inside the comprehension, iterate over the items of test_dict and use the modulo operator to group them into sub-dictionaries of size K. The dict() constructor is used to create each sub-dictionary.
  • Print the resulting list of dictionaries using the print() function.

Below is the implementation of the above approach:

Python3




# Python3 code to demonstrate working of
# Convert dictionary to K Keys dictionaries
# Using dictionary comprehension
 
# initializing dictionary
test_dict = {'Gfg' : 1, 'is' : 2, 'best' : 3, 'for' : 4, 'geeks' : 5, 'CS' : 6}
 
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
 
# initializing K
K = 2
 
# using dictionary comprehension to create list of sub-dictionaries
res = [dict(list(test_dict.items())[i:i+K]) for i in range(0, len(test_dict), K)]
 
# printing result
print("The converted list : " + str(res))


Output

The original dictionary is : {'Gfg': 1, 'is': 2, 'best': 3, 'for': 4, 'geeks': 5, 'CS': 6}
The converted list : [{'Gfg': 1, 'is': 2}, {'best': 3, 'for': 4}, {'geeks': 5, 'CS': 6}]

Time complexity: O(N), where N is the number of key-value pairs in the original dictionary.
Auxiliary space: O(N/K), where N is the number of key-value pairs in the original dictionary and K is the size of each sub-dictionary. 

Method 3:  Using the iter function and the dict constructor. 

Step-by-step approach:

  • Initialize an empty list to store the sub-dictionaries.
  • Get an iterator of the original dictionary using the iter function.
  • In each iteration, use the dict constructor to create a sub-dictionary from the next K items in the iterator, where K is the desired number of keys in each sub-dictionary.
  • Append the sub-dictionary to the list of sub-dictionaries.
  • Return the list of sub-dictionaries.

Below is the implementation of the above approach:

Python3




# Python3 code to demonstrate working of
# Convert dictionary to K Keys dictionaries
# Using iter function and dict constructor
import itertools
 
# initializing dictionary
test_dict = {'Gfg': 1, 'is': 2, 'best': 3, 'for': 4, 'geeks': 5, 'CS': 6}
 
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
 
# initializing K
K = 2
 
# using iter function and dict constructor to create list of sub-dictionaries
it = iter(test_dict.items())
res = []
while True:
    sub_dict = dict(itertools.islice(it, K))
    if not sub_dict:
        break
    res.append(sub_dict)
 
# printing result
print("The converted list : " + str(res))


Output

The original dictionary is : {'Gfg': 1, 'is': 2, 'best': 3, 'for': 4, 'geeks': 5, 'CS': 6}
The converted list : [{'Gfg': 1, 'is': 2}, {'best': 3, 'for': 4}, {'geeks': 5, 'CS': 6}]

Time complexity: O(n), where n is the number of items in the original dictionary. 
Auxiliary space: O(n), since we need to store the list of sub-dictionaries.



Similar Reads

Convert Dictionary of Dictionaries to Python List of Dictionaries
Dictionaries are powerful data structures in Python, allowing the storage of key-value pairs. Sometimes, we encounter scenarios where we have a dictionary of dictionaries, and we need to convert it into a list of dictionaries for easier manipulation or processing. In this article, we'll explore five different methods to achieve this conversion, eac
3 min read
Python - Convert Dictionaries List to Order Key Nested dictionaries
Given list of dictionaries, convert to ordered key dictionary with each key contained dictionary as its nested value. Input : test_list = [{"Gfg" : 3, 4 : 9}, {"is": 8, "Good" : 2}] Output : {0: {'Gfg': 3, 4: 9}, 1: {'is': 8, 'Good': 2}} Explanation : List converted to dictionary with index keys. Input : test_list = [{"is": 8, "Good" : 2}] Output :
6 min read
Convert a List of Dictionaries into a Set of Dictionaries
Python's versatility allows developers to manipulate data in various ways. When working with a list of dictionaries, there might be scenarios where you want to convert it into a set of dictionaries to eliminate duplicates or for other reasons. In this article, we'll explore three different methods to achieve this goal with code examples. Convert A
3 min read
Python - Combine two dictionaries having key of the first dictionary and value of the second dictionary
Given two dictionaries. The task is to merge them in such a way that the resulting dictionary contains the key from the first dictionary and the value from the second dictionary. Examples: Input : test_dict1 = {"Gfg" : 20, "is" : 36, "best" : 100}, test_dict2 = {"Gfg2" : 26, "is2" : 20, "best2" : 70} Output : {'Gfg': 26, 'is': 20, 'best': 70} Expla
8 min read
Python Program to extract Dictionaries with given Key from a list of dictionaries
Given a list of dictionaries, the task is to write a python program that extracts only those dictionaries that contain a specific given key value. Input : test_list = [{'gfg' : 2, 'is' : 8, 'good' : 3}, {'gfg' : 1, 'for' : 10, 'geeks' : 9}, {'love' : 3}], key= "gfg"Output : [{'gfg': 2, 'is': 8, 'good': 3}, {'gfg' : 1, 'for' : 10, 'geeks' : 9}] Expl
6 min read
Python - Convert list of dictionaries to Dictionary Value list
Given a list of dictionary, convert to dictionary with same key mapped with all values in as value list. Input : test_list = [{"Gfg" : 6, "is" : 9, "best" : 10}, {"Gfg" : 8, "is" : 11, "best" : 19}] Output : {'Gfg': [6, 8], 'is': [9, 11], 'best': [10, 19]} Explanation : 6, 8 of "Gfg" mapped as value list, similarly every other. Input : test_list =
10 min read
Python Program to Convert dictionary string values to List of dictionaries
Given a dictionary with values as delimiter separated values, the task is to write a python program to convert each string as different value in list of dictionaries. Input : test_dict = {"Gfg" : "1:2:3", "best" : "4:8:11"} Output : [{'Gfg': '1', 'best': '4'}, {'Gfg': '2', 'best': '8'}, {'Gfg': '3', 'best': '11'}] Explanation : List after dictionar
2 min read
Python - Convert list of dictionaries to dictionary of lists
In this article, we will discuss how to convert a list of dictionaries to a dictionary of lists. Method 1: Using for loop By iterating based on the first key we can convert list of dict to dict of list. Python program to create student list of dictionaries C/C++ Code # create a list of dictionaries # with student data data = [ {'name': 'sravan', 's
3 min read
Python - Convert Flat dictionaries to Nested dictionary
Sometimes, while working with records, we can have a problem in which we need to perform the task of conversion of multiple flat dictionaries to a single nested dictionary. This can have applications in many domains in which data is used extensively. Let's discuss certain ways by which we can convert flat dictionaries into nested dictionaries. Conv
4 min read
Python | Split dictionary of lists to list of dictionaries
Conversion from one data type to other is essential in various facets of programming. Be it development or competitive programming. Hence knowledge of it is quite useful and necessary. Let's discuss certain methods by which dictionary of list can be converted to the corresponding list of dictionaries. Method #1 : Using list comprehension We can use
4 min read