Open In App

Python – Convert Suffix denomination to Values

Improve
Improve
Like Article
Like
Save
Share
Report

Given a strings list with denomination suffixes, the task is to write a Python program to convert the string to its actual values, substituting for denomination actual values.

Input : test_list = ["25Cr", "7M", "24B", "9L", "2Tr", "17K"] 
Output : [250000000.0, 7000000.0, 24000000000.0, 900000.0, 2000000000000.0, 17000.0] 
Explanation : Suffix replaced as per Symbol notations with numerical figure. 
Input : test_list = ["25Cr", "7M", "24B"] 
Output : [250000000.0, 7000000.0, 24000000000.0] 
Explanation : Suffix replaced as per Symbol notations with numerical figure.

Method 1: Using float() + dictionary + loop

Approach: 

In this, we construct a dictionary of all denominations with its original values and then convert the value to float and perform multiplication with the denomination’s actual value.

Python3




# Python3 code to demonstrate working of
# Convert Suffix denomination to Values
# using float() + dictionary + loop
 
# Initializing list
test_list = ["25Cr", "7M", "24B", "9L", "2Tr", "17K"]
 
# Printing original list
print("The original list is : " + str(test_list))
 
# Initializing values dictionary
val_dict = {"M": 1000000, "B": 1000000000, "Cr": 10000000,
            "L": 100000, "K": 1000, "Tr": 1000000000000}
 
# Empty list
res = []
 
for ele in test_list:
    for key in val_dict:
        if key in ele:
 
            # Conversion of dictionary keys to values
            val = float(ele.replace(key, "")) * val_dict[key]
            res.append(val)
 
# Printing result
print("The resolved dictionary values : " + str(res))


Output:

The original list is : [’25Cr’, ‘7M’, ’24B’, ‘9L’, ‘2Tr’, ’17K’] The resolved dictionary values : [250000000.0, 7000000.0, 24000000000.0, 900000.0, 2000000000000.0, 17000.0]

Time Complexity: O(n*n)
Auxiliary Space: O(n)

Method 2: Using re.findall() + dictionary comprehension

Approach:

  1. Import the required modules.
  2. Define the input list and the dictionary with denomination values.
  3. Use regular expressions to extract the numbers and the suffix denominations from each element of the input list.
  4. Use a dictionary comprehension to convert the suffix denominations to their respective values and multiply them with the corresponding numbers.
  5. Print the final result.

Python3




import re
 
# Initializing list
test_list = ["25Cr", "7M", "24B", "9L", "2Tr", "17K"]
print("The original list is : " + str(test_list))
 
# Initializing values dictionary
val_dict = {"M": 1000000, "B": 1000000000, "Cr": 10000000,
            "L": 100000, "K": 1000, "Tr": 1000000000000}
 
# Extracting numbers and suffix denominations using regular expressions
pattern = r'(\d+)(\w+)'
result = [re.findall(pattern, s)[0] for s in test_list]
 
# Converting suffix denominations to their respective values
# and multiply with numbers
result = [float(num) * val_dict[suffix] for num, suffix in result]
 
# Printing result
print("The resolved dictionary values : " + str(result))


Output

The original list is : ['25Cr', '7M', '24B', '9L', '2Tr', '17K']
The resolved dictionary values : [250000000.0, 7000000.0, 24000000000.0, 900000.0, 2000000000000.0, 17000.0]

Time complexity: O(n), where n is the number of elements in the input list.
Auxiliary space: O(n), where n is the number of elements in the input list, for storing the intermediate result list.

Method 3: using regular expressions + loop

Python3




import re
 
# Initializing list
test_list = ["25Cr", "7M", "24B", "9L", "2Tr", "17K"]
 
# Printing original list
print("The original list is: " + str(test_list))
 
# Initializing values dictionary
val_dict = {"M": 1000000, "B": 1000000000, "Cr": 10000000,
            "L": 100000, "K": 1000, "Tr": 1000000000000}
 
# Empty list
res = []
 
for ele in test_list:
    match = re.findall(r'(\d+)([A-Za-z]+)', ele)
    if match:
        val, suffix = match[0]
        if suffix in val_dict:
            res.append(float(val) * val_dict[suffix])
 
# Printing result
print("The resolved dictionary values: " + str(res))


Output

The original list is: ['25Cr', '7M', '24B', '9L', '2Tr', '17K']
The resolved dictionary values: [250000000.0, 7000000.0, 24000000000.0, 900000.0, 2000000000000.0, 17000.0]

Time complexity: O(n), where n is the number of elements in the test_list.
Auxiliary space: O(1), as it does not depend on the input size but on the fixed number of elements in the value dictionary.



Last Updated : 18 May, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads