While working with dictionaries, we can come across a problem in which we might have to get just some of the initial keys in dictionary. This problem can typically occur in cases of the web development domain. Let’s discuss certain ways in which this problem can be solved.
Method #1 : Using items() + list slicing
To solve this problem, a combination of the above functions has to be implied. The items function can be used to get all the dictionary items and main task is done by list slicing, which limits the dictionary key-value pair.
Python3
# Python3 code to demonstrate working of # Get first K items in dictionary # Using items() + list slicing # Initialize dictionary test_dict = { 'gfg' : 1 , 'is' : 2 , 'best' : 3 , 'for' : 4 , 'CS' : 5 } # printing original dictionary print ( "The original dictionary : " + str (test_dict)) # Initialize limit K = 3 # Using items() + list slicing # Get first K items in dictionary res = dict ( list (test_dict.items())[ 0 : K]) # printing result print ( "Dictionary limited by K is : " + str (res)) |
The original dictionary : {‘is’: 2, ‘CS’: 5, ‘best’: 3, ‘gfg’: 1, ‘for’: 4} Dictionary limited by K is : {‘is’: 2, ‘CS’: 5, ‘best’: 3}
Time Complexity: O(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 islice() + items()
The combination of the above functions can be used to perform this particular task. In these, we perform the slice using the islice() and items function allows us to get the items out of iterable.
Python3
# Python3 code to demonstrate working of # Get first K items in dictionary # Using islice() + items() import itertools # Initialize dictionary test_dict = { 'gfg' : 1 , 'is' : 2 , 'best' : 3 , 'for' : 4 , 'CS' : 5 } # printing original dictionary print ( "The original dictionary : " + str (test_dict)) # Initialize limit K = 3 # Using islice() + items() # Get first K items in dictionary res = dict (itertools.islice(test_dict.items(), K)) # printing result print ( "Dictionary limited by K is : " + str (res)) |
The original dictionary : {'gfg': 1, 'is': 2, 'best': 3, 'for': 4, 'CS': 5} Dictionary limited by K is : {'gfg': 1, 'is': 2, 'best': 3}
The time complexity of the provided Python code is O(K), as the itertools.islice() method is used to return only the first K items from the dictionary.
The auxiliary space complexity of the code is also O(K), as the res dictionary is created to store the first K items of the original dictionary.
Method #3: Using list comprehension
This particular problem can also be solved using list comprehension and a combination of items() and list slicing. In this, list comprehension allows one to write of concise codes and combinations of items() and list slicing is used to perform the task.
Python3
# Python3 code to demonstrate working of # Get first K items in dictionary # Using list comprehension # Initialize dictionary test_dict = { 'gfg' : 1 , 'is' : 2 , 'best' : 3 , 'for' : 4 , 'CS' : 5 } # printing original dictionary print ( "The original dictionary : " + str (test_dict)) # Initialize limit K = 3 # Using list comprehension # Get first K items in dictionary res = {key: test_dict[key] for key in list (test_dict)[:K]} # printing result print ( "Dictionary limited by K is : " + str (res)) #This code is contributed by Edula Vinay Kumar Reddy |
The original dictionary : {'gfg': 1, 'is': 2, 'best': 3, 'for': 4, 'CS': 5} Dictionary limited by K is : {'gfg': 1, 'is': 2, 'best': 3}
Time complexity: O(n)
Auxiliary space: O(k)
Method 4: Using a for loop to iterate over the dictionary keys and values and append them to a new dictionary until K items are reached
Approach:
- Initialize a dictionary named “test_dict” with some key-value pairs.
- Print the original dictionary using the “print()” function and string concatenation.
- Initialize a variable “K” with the number of items to be returned from the dictionary.
- Initialize an empty dictionary named “res”.
- Use a for loop with “test_dict.items()” to iterate over the key-value pairs of the dictionary.
- Check if the length of “res” is less than “K”. If so, add the key-value pair to the “res” dictionary using the key as the index and the value as the value.
- If the length of “res” is equal to or greater than “K”, break out of the loop.
- Print the final dictionary named “res” limited to the first K items.
Python3
# Python3 code to demonstrate working of # Get first K items in dictionary # Using for loop # Initialize dictionary test_dict = { 'gfg' : 1 , 'is' : 2 , 'best' : 3 , 'for' : 4 , 'CS' : 5 } # printing original dictionary print ( "The original dictionary : " + str (test_dict)) # Initialize limit K = 3 # Initialize a new dictionary res = {} # Using for loop # Get first K items in dictionary for key, value in test_dict.items(): if len (res) < K: res[key] = value else : break # printing result print ( "Dictionary limited by K is : " + str (res)) |
The original dictionary : {'gfg': 1, 'is': 2, 'best': 3, 'for': 4, 'CS': 5} Dictionary limited by K is : {'gfg': 1, 'is': 2, 'best': 3}
Time complexity: O(n), where n is the number of items in the dictionary.
Auxiliary space: O(K), where K is the number of items to be returned.
Method #5: Using itertools library and islice() function
Step-by-step approach:
- Importing the islice() function from the itertools library.
- Use the islice() function along with the items() function of the dictionary to create a new iterator that returns the first K items of the dictionary.
- Finally, create a new dictionary res by passing the iterator returned by islice() to the dict() constructor.
- Print the resulting dictionary res to the console.
Below is the implementation of the above approach:
Python3
# import islice function from itertools library from itertools import islice # Initialize dictionary test_dict = { 'gfg' : 1 , 'is' : 2 , 'best' : 3 , 'for' : 4 , 'CS' : 5 } # printing original dictionary print ( "The original dictionary : " + str (test_dict)) # Initialize limit K = 3 # Using islice() and items() # Get first K items in dictionary res = dict (islice(test_dict.items(), K)) # printing result print ( "Dictionary limited by K is : " + str (res)) |
The original dictionary : {'gfg': 1, 'is': 2, 'best': 3, 'for': 4, 'CS': 5} Dictionary limited by K is : {'gfg': 1, 'is': 2, 'best': 3}
Time complexity: O(K), as we only iterate over K items in the dictionary.
Auxiliary space: O(K) auxiliary space to store the new dictionary res.