Python – Dictionary values String Length Summation
Last Updated :
27 Apr, 2023
Sometimes, while working with Python dictionaries we can have problem in which we need to perform the summation of all the string lengths which as present as dictionary values. This can have application in many domains such as web development and day-day programming. Lets discuss certain ways in which this task can be performed.
Method #1 : Using sum() + generator expression + len() The combination of above functions can be used to perform this task. In this, we compute length using len(), summation using sum() and iteration using generator expression.
Python3
from collections import ChainMap
test_dict = { 'gfg' : '2345' ,
'is' : 'abcde' ,
'best' : 'qwerty' }
print ("The original dictionary is : " + str (test_dict))
res = sum (( len (val) for val in test_dict.values()))
print ("The string values length summation : " + str (res))
|
Output :
The original dictionary is : {‘is’: ‘abcde’, ‘best’: ‘qwerty’, ‘gfg’: ‘2345’} The string values length summation : 15
Time complexity: O(n), where n is the number of values in the dictionary.
Auxiliary Space: O(1), as the program does not use any additional data structure whose space requirements depend on the size of the input.
Method #2 : Using map() + len() + sum() This performs the task similar to above function. The only difference is that iteration is performed using map() than generator expression.
Python3
test_dict = { 'gfg' : '2345' ,
'is' : 'abcde' ,
'best' : 'qwerty' }
print ("The original dictionary is : " + str (test_dict))
res = sum ( map ( len , test_dict.values()))
print ("The string values length summation : " + str (res))
|
Output :
The original dictionary is : {‘is’: ‘abcde’, ‘best’: ‘qwerty’, ‘gfg’: ‘2345’} The string values length summation : 15
Time complexity: O(n), where n is the number of values in the dictionary.
Auxiliary Space: O(1), constant extra space is required
Method 3 : using a for loop:
step-by-step approach :
- We initialize a dictionary test_dict with three key-value pairs. The keys are strings and the values are also strings.
- We print the original dictionary using the print() function and str() to convert the dictionary to a string.
- We initialize a variable res to 0. This variable will store the sum of the lengths of all the string values in the dictionary.
- We use a for loop to iterate over all the values in the dictionary. For each value, we compute its length using the len() function and add it to the res variable.
- After the loop completes, we print the result using the print() function and str() to convert the integer res to a string.
Python3
test_dict = { 'gfg' : '2345' ,
'is' : 'abcde' ,
'best' : 'qwerty' }
print ( "The original dictionary is : " + str (test_dict))
res = 0
for val in test_dict.values():
res + = len (val)
print ( "The string values length summation : " + str (res))
|
Output
The original dictionary is : {'gfg': '2345', 'is': 'abcde', 'best': 'qwerty'}
The string values length summation : 15
Time complexity: O(n), where n is the number of values in the dictionary.
Auxiliary space: O(1), as we are only using a constant amount of extra space to store the res variable.
Method #4: Using reduce() from functools module
Step-by-Step Approach:
- Import the reduce() function from the functools module.
- Initialize the dictionary test_dict.
- Print the original dictionary.
- Use the reduce() function along with a lambda function to iterate through the values of the dictionary and add up the lengths of the values.
- Print the result.
Python3
test_dict = { 'gfg' : '2345' ,
'is' : 'abcde' ,
'best' : 'qwerty' }
print ( "The original dictionary is : " + str (test_dict))
from functools import reduce
res = reduce ( lambda x, y: x + len (y), test_dict.values(), 0 )
print ( "The string values length summation : " + str (res))
|
Output
The original dictionary is : {'gfg': '2345', 'is': 'abcde', 'best': 'qwerty'}
The string values length summation : 15
Time complexity: O(n), where n is the number of values in the dictionary.
Auxiliary space: O(1) as we are not using any extra space.
Please Login to comment...