Python – Group keys to values list
Last Updated :
27 Apr, 2023
Sometimes, while working with Python dictionaries, we can have problem in which we need to find all possible values of all keys in a dictionary. This utility is quite common and can occur in many domains including day-day programming and school programming. Lets discuss certain way in which this task can be performed.
Method #1 : Using loop + defaultdict() The combination of above functionalities can be used to perform this task. In this, we capture all the elements in a list by initializing defaultdict with list datatype and keep on appending all the values to associated key.
Python3
from collections import defaultdict
test_list = [{ 'gfg' : 1 , 'is' : 4 , 'best' : 7 },
{ 'gfg' : 9 , 'is' : 8 , 'best' : 3 },
{ 'gfg' : 4 , 'is' : 4 , 'best' : 7 },
{ 'gfg' : 7 , 'is' : 2 , 'best' : 8 },
{ 'gfg' : 1 , 'is' : 4 , 'best' : 7 },
{ 'gfg' : 10 , 'is' : 9 , 'best' : 2 },
{ 'gfg' : 0 , 'is' : 5 , 'best' : 6 }]
print ("The original list is : " + str (test_list))
res = defaultdict( set )
for sub in test_list:
for key, val in sub.items():
res[key].add(val)
print ("The grouped key values : " + str ( dict (res)))
|
Output :
The original list is : [{‘best’: 7, ‘gfg’: 1, ‘is’: 4}, {‘best’: 3, ‘gfg’: 9, ‘is’: 8}, {‘best’: 7, ‘gfg’: 4, ‘is’: 4}, {‘best’: 8, ‘gfg’: 7, ‘is’: 2}, {‘best’: 7, ‘gfg’: 1, ‘is’: 4}, {‘best’: 2, ‘gfg’: 10, ‘is’: 9}, {‘best’: 6, ‘gfg’: 0, ‘is’: 5}] The grouped key values : {‘best’: {8, 2, 3, 6, 7}, ‘gfg’: {0, 1, 4, 7, 9, 10}, ‘is’: {8, 9, 2, 4, 5}}
Time complexity: O(n*n), where n is the number of values in the dictionary.
Auxiliary Space: O(n), where n is the size of dictionary
Using set comprehension:
Approach:
In this approach, we iterate over the list of dictionaries and create a set comprehension for each key to extract the values of that key from all the dictionaries. We then add these sets to a new dictionary.
Python3
def group_keys_to_values_4(original_list):
result_dict = {}
for dictionary in original_list:
for key in dictionary:
result_dict.setdefault(key, set ()).update({dictionary[key]})
return result_dict
original_list = [{ 'best' : 7 , 'gfg' : 1 , 'is' : 4 }, { 'best' : 3 , 'gfg' : 9 , 'is' : 8 },{ 'best' : 7 , 'gfg' : 4 , 'is' : 4 }, { 'best' : 8 , 'gfg' : 7 , 'is' : 2 },{ 'best' : 7 , 'gfg' : 1 , 'is' : 4 },{ 'best' : 2 , 'gfg' : 10 , 'is' : 9 },{ 'best' : 6 , 'gfg' : 0 , 'is' : 5 }]
grouped_dict = group_keys_to_values_4(original_list)
print ( "The original list is :" , original_list)
print ( "The grouped key values :" , grouped_dict)
|
Output
The original list is : [{'best': 7, 'gfg': 1, 'is': 4}, {'best': 3, 'gfg': 9, 'is': 8}, {'best': 7, 'gfg': 4, 'is': 4}, {'best': 8, 'gfg': 7, 'is': 2}, {'best': 7, 'gfg': 1, 'is': 4}, {'best': 2, 'gfg': 10, 'is': 9}, {'best': 6, 'gfg': 0, 'is': 5}]
The grouped key values : {'best': {2, 3, 6, 7, 8}, 'gfg': {0, 1, 4, 7, 9, 10}, 'is': {2, 4, 5, 8, 9}}
the time complexity is O(n*m), where n is the number of dictionaries in the list and m is the number of keys in each dictionary.
the space complexity is O(n*m), where n is the number of dictionaries in the list and m is the number of key-value pairs in each dictionary.
METHOD 3:
APPROACH:
This approach creates a dictionary where each key is associated with a list of values from all the dictionaries in the “test_list” that have that key. The defaultdict is used to ensure that any missing key in the dictionary is initialized with an empty list.
ALGORITHM:
1.Import the defaultdict class from the collections module.
2.Initialize a defaultdict with the value type as list.
3.Iterate through each dictionary in the test_list.
4.For each dictionary, iterate through its items and add the key-value pairs to the grouped_dict defaultdict.
5.If the key already exists in grouped_dict, append the value to its list, otherwise create a new key-value pair.
6.Print the grouped_dict dictionary.
Python3
from collections import defaultdict
test_list = [{ 'gfg' : 1 , 'is' : 4 , 'best' : 7 },
{ 'gfg' : 9 , 'is' : 8 , 'best' : 3 },
{ 'gfg' : 4 , 'is' : 4 , 'best' : 7 },
{ 'gfg' : 7 , 'is' : 2 , 'best' : 8 },
{ 'gfg' : 1 , 'is' : 4 , 'best' : 7 },
{ 'gfg' : 10 , 'is' : 9 , 'best' : 2 },
{ 'gfg' : 0 , 'is' : 5 , 'best' : 6 }]
grouped_dict = defaultdict( list )
for dictionary in test_list:
for key, value in dictionary.items():
grouped_dict[key].append(value)
print ( dict (grouped_dict))
|
Output
{'gfg': [1, 9, 4, 7, 1, 10, 0], 'is': [4, 8, 4, 2, 4, 9, 5], 'best': [7, 3, 7, 8, 7, 2, 6]}
Time complexity: O(n*m), where n is the number of dictionaries in the test_list and m is the average number of items in a dictionary.
Auxiliary Space: O(k)
Similar Reads
Python - Group Similar items to Dictionary Values List
We are given a list of items and our task is to group similar elements together as dictionary values. The keys will be the unique items and their values will be lists containing all occurrences of that item. For example, given ['apple', 'banana', 'apple', 'orange', 'banana'], the output should be: {
2 min read
Python | Merge Python key values to list
Sometimes, while working with Python, we might have a problem in which we need to get the values of dictionary from several dictionaries to be encapsulated into one dictionary. This type of problem can be common in domains in which we work with relational data like in web developments. Let's discuss
4 min read
Python - Merge List value Keys to Matrix
Sometimes, while working with Python dictionary, we can have a problem in which we need to perform the merger of certain keys in dictionary. In this, we tend to form a matrix of resultant singular key. This kind of problem can have applications in data domains. Let's discuss certain way in which thi
4 min read
Convert List to Key - Value List by Prefix Grouping - Python
Given a list, we are required to convert it into a dictionary of consecutive key-value pairs where the key is a string (starting with a prefix) and the values are grouped by that prefix until the next key with the same prefix is encountered. For example: We have a list ["GFG-1", 4, 6, "GFG-2", 3, "G
4 min read
Python - Values Frequency Index List
Sometimes, while working with Python tuples, we can have a problem in which we need to extract the frequency of each value in tuple. This has been solved earlier. We can have a modification in which we need to create list in which index represents the key and value of it represents the frequency of
4 min read
Python - Tuple key detection from value list
Sometimes, while working with record data, we can have a problem in which we need to extract the key which has matching value of K from its value list. This kind of problem can occur in domains that are linked to data. Lets discuss certain ways in which this task can be performed. Method #1 : Using
6 min read
Python - Convert key-values list to flat dictionary
We are given a list that contains tuples with the pairs of key and values we need to convert that list into a flat dictionary. For example a = [("name", "Ak"), ("age", 25), ("city", "NYC")] is a list we need to convert it to dictionary so that output should be a flat dictionary {'name': 'Ak', 'age':
3 min read
Python | Group tuple into list based on value
Sometimes, while working with Python tuples, we can have a problem in which we need to group tuple elements to nested list on basis of values allotted to it. This can be useful in many grouping applications. Let's discuss certain ways in which this task can be performed. Method #1 : Using itemgetter
6 min read
Python | Grouped summation of tuple list
Many times, we are given a list of tuples and we need to group its keys and perform certain operations while grouping. The most common operation is addition. Let's discuss certain ways in which this task can be performed. Apart from addition, other operations can also be performed by doing small cha
10 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