Given a list arr[] consisting of N dictionaries, the task is to find the sum of unique keys from the given list of the dictionary.
Examples:
Input: arr = [{‘my’: 1, ‘name’: 2}, {‘is’: 1, ‘my’: 3}, {‘ria’: 2}]
Output: [‘ria’, ‘my’, ‘is’, ‘name’]
Explanation: The set of unique keys are {“ria”, “my”, “Is”, “name”}.
Input: arr = [{‘X’: 100, ‘Y’: 2}, {‘Z’: 1, ‘Z’: 30}, {‘X’: 21}]
Output: [‘Z’, ‘X’, ‘Y’]
Explanation: The set of unique keys are {“X”, “Y”, “Z”}.
Approach using Chain iterable tools: The problem can be solved using set() and keys() methods and chain iterable tools to solve the above problem.
Follow the steps below to solve the problem:
- Traverse all keys of every dictionary using chain iterable tools
- Store the set of keys in a list, say res.
- Print the list res as the required answer.
Below is the implementation of the above approach:
Python3
from itertools import chain
def UniqueKeys(arr):
res = list ( set (chain.from_iterable(sub.keys() for sub in arr)))
print ( str (res))
arr = [{ 'my' : 1 , 'name' : 2 },
{ 'is' : 1 , 'my' : 3 },
{ 'ria' : 2 }]
UniqueKeys(arr)
|
Output
['my', 'is', 'name', 'ria']
Time Complexity: O(N * maxm), where maxm denotes the size of the longest dictionary.
Auxiliary Space: O(N * maxm)
Approach using List Comprehension and Dictionary Comprehension: The problem can be solved alternately using set() and keys() method and list comprehension and dictionary comprehension to solve the problem.
Follow the steps below to solve the problem:
Below is the implementation of the above approach:
Python3
from itertools import chain
def UniqueKeys(arr):
res = list ( set (val for dic in arr for val in dic.keys()))
print ( str (res))
arr = [{ 'my' : 1 , 'name' : 2 },
{ 'is' : 1 , 'my' : 3 },
{ 'ria' : 2 }]
UniqueKeys(arr)
|
Output
['is', 'name', 'ria', 'my']
Time Complexity: O(N * maxm), where maxm denotes the size of the longest dictionary.
Auxiliary Space: O(N * maxm)
Approach : Using keys(),extend(),list() and set() methods
This program takes a list of dictionaries arr where each dictionary contains keys representing words and their frequency counts. It then extracts all the unique keys from all the dictionaries and creates a new list new_list containing only those unique keys. Finally, it prints the new_list.
Follow the below steps to implement the above idea:
- Create a list of dictionaries named arr. Each dictionary in the list has key-value pairs representing words and their frequency counts.
- Create an empty list named new_list.
- Iterate over each dictionary in arr using a for loop. For each dictionary, get a list of keys using the keys() method and convert it to a list using the list() function.
- Add the resulting list to new_list using the extend() method, which adds each element of the list to new_list one by one.
- Use the set() function to remove any duplicate elements from new_list.
- Convert new_list back to a list using the list() function.
- Print the final new_list containing all unique words from all the dictionaries in the original list arr.
Below is the implementation of the above approach:
Python3
arr = [{ 'my' : 1 , 'name' : 2 },
{ 'is' : 1 , 'my' : 3 },
{ 'ria' : 2 }]
new_list = []
for i in arr:
new_list.extend( list (i.keys()))
new_list = list ( set (new_list))
print (new_list)
|
Output
['name', 'my', 'ria', 'is']
Time Complexity: O(n)
Auxiliary Space: O(n)
Approach : Using append(),Counter(),keys(), and list() methods
Python3
from collections import Counter
arr = [{ 'my' : 1 , 'name' : 2 },
{ 'is' : 1 , 'my' : 3 },
{ 'ria' : 2 }]
new_list = []
for i in arr:
for j in i:
new_list.append(j)
uniq = Counter(new_list)
print ( list (uniq.keys()))
|
Output
['my', 'name', 'is', 'ria']
The time complexity of this program is O(n^2), where n is the total number of dictionaries in the arr list
The auxiliary space complexity of this program is O(n), where n is the total number of unique keys in the dictionaries in the arr list.
Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape,
GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out -
check it out now!
Last Updated :
21 Mar, 2023
Like Article
Save Article