Home > Article > Backend Development > Python program to split a dictionary and its keys into K equal dictionaries
A dictionary is a unique form of array used to implement data structures in Python. Dictionaries have several related features that make them a very powerful tool in Python. It stores data in the form of key-value pairs, where each key is a unique identifier used to access the corresponding value associated with it.
We can perform various operations on this dictionary and manipulate the data stored in it. This article will explain such an operation, where we split a dictionary and its keys into K equal dictionaries.
We have to pass a dictionary and then split it into K equal dictionaries, where "K" is the size of the original dictionary. The way of partitioning should be to divide all keys equally. Let us understand this through an example -
Input: dict1 = {"Score":100, "Age": 40, "Salary": 25000, "cutoff":44} Output: [{'Score': 25.0, 'Age': 10.0, 'Salary': 6250.0, 'cutoff': 11.0}, {'Score': 25.0, 'Age': 10.0, 'Salary': 6250.0, 'cutoff': 11.0}, {'Score': 25.0, 'Age': 10.0, 'Salary': 6250.0, 'cutoff': 11.0}, {'Score': 25.0, 'Age': 10.0, 'Salary': 6250.0, 'cutoff': 11.0}]
Here each value associated with a different key is reduced to 1/K times the original value and a list of K dictionaries is returned. Now that we've discussed the problem statement, let's discuss some solutions.
In this method, we will pass a sample dictionary and then get the "K" value with the help of "len()" method. This method will return the length of the dictionary. After that, we will iterate over the example dictionary and divide each "key value" by K with the help of the "/" operand.
We will store these divided values in an empty dictionary, and then add all newly created dictionaries to an empty list with the help of the "append()" method.
dict1 = {"Score":100 , "Age": 40, "Salary": 25000, "cutoff":44} print(f"Original dictionary is: {dict1}") K = len(dict1) print(f"The value for K is: {K}") empLis = [] empDict ={} for keys in dict1: empDict[keys] = dict1[keys]/K empLis.append(empDict) print(f"The newly divided dictionary is: {empLis}")
Original dictionary is: {'Score': 100, 'Age': 40, 'Salary': 25000, 'cutoff': 44} The value for K is: 4 The newly divided dictionary is: [{'Score': 25.0, 'Age': 10.0, 'Salary': 6250.0, 'cutoff': 11.0}, {'Score': 25.0, 'Age': 10.0, 'Salary': 6250.0, 'cutoff': 11.0}, {'Score': 25.0, 'Age': 10.0, 'Salary': 6250.0, 'cutoff': 11.0}, {'Score': 25.0, 'Age': 10.0, 'Salary': 6250.0, 'cutoff': 11.0}]
This method is an optimized version of the previous solution. Here we will summarize iterations over a single dictionary and list with the help of dictionary comprehension and list comprehension. After passing the example dictionary, we will create a dictionary in which to store the divided values (DivDict).
Iterate over and return the original dictionary divided by K keys. List (lisDict) stores K dictionaries containing divided values. We specify that the length of the list is equal to the K value.
dict1 = {"Number of sixes":244, "Number of fours": 528, "Strike rate": 164, "Balls faced":864} print(f"Original dictionary is: {dict1}") K = len(dict1) print(f"The value for K is: {K}") #using dictionary comprehension DivDict ={key_value:dict1[key_value]/K for key_value in dict1} #using list comprehension lisDict = [DivDict for i in range(K)] print(f"The newly divided dictionary is: {lisDict}")
Original dictionary is: {'Number of sixes': 244, 'Number of fours': 528, 'Strike rate': 164, 'Balls faced': 864} The value for K is: 4 The newly divided dictionary is: [{'Number of sixes': 61.0, 'Number of fours': 132.0, 'Strike rate': 41.0, 'Balls faced': 216.0}, {'Number of sixes': 61.0, 'Number of fours': 132.0, 'Strike rate': 41.0, 'Balls faced': 216.0}, {'Number of sixes': 61.0, 'Number of fours': 132.0, 'Strike rate': 41.0, 'Balls faced': 216.0}, {'Number of sixes': 61.0, 'Number of fours': 132.0, 'Strike rate': 41.0, 'Balls faced': 216.0}]
There are other methods involving the use of: - zip(), lambda(), groupby(), slicing etc.
These methods can be used when we have to introduce certain specifications in the code, such as for a specific value or key in a dictionary. The above solution is the basic approach that can be used to split the sample dictionary into K equal parts.
In this article, we discussed two solutions for partitioning a dictionary and its keys into K equal dictionaries. The first solution revolves around "Loop Concept" where we iterate over the dictionary and add it to a list. The second solution focuses on a more optimized approach, where we summarize the entire loop concept into a single dictionary and list.
The above is the detailed content of Python program to split a dictionary and its keys into K equal dictionaries. For more information, please follow other related articles on the PHP Chinese website!