Saturday, August 30, 2025
HomeLanguagesPython | Sort a list of percentage

Python | Sort a list of percentage

Given a list of percentage, write a Python program to sort the given list in ascending order. Let’s see different ways to do the task. Code #1: Chops ‘%’ in string and convert it into float. 

Python3




# Python code to sort list of percentage
 
# List initialization
Input =['2.5 %', '6.4 %', '91.6 %', '11.5 %']
 
# removing % and converting to float
# then apply sort function
Input.sort(key = lambda x: float(x[:-1]))
 
# printing output
print(Input)


Output:

['2.5 %', '6.4 %', '11.5 %', '91.6 %']

Time Complexity: O(nlogn), where n is the length of the list test_list 
Auxiliary Space: O(n) additional space of size n is created where n is the number of elements in the res list 

  Code #2: 

Python3




# Python code to sort list of percentage
 
# List initialization
Input =['2.5 %', '6.4 %', '91.6 %', '11.5 %']
 
# Temporary list initialization
temp = []
 
# removing % sign
for key in Input:
    temp.append((key[:-1]))
 
# sorting list of float
temp = sorted(temp, key = float)
 
# Output list initialization
output = []
 
# Adding percentage sign
for key in temp:
    output.append(key + '%')
 
# printing output
print(output)


Output:

['2.5 %', '6.4 %', '11.5 %', '91.6 %']

Time Complexity: O(nlogn), where n is the length of Input list.
Auxiliary Space: O(n), where n is the number of elements in output list 

Using re:

Here is another approach using the re module and a lambda function:

  1. Import the re module
  2. Define a lambda function that takes a string as input and uses a regular expression to extract the float value of the string
  3. Use the sorted() function to sort the input list using the lambda function as the key

Here is the implementation of this approach:

Python3




import re
 
def sort_percentage_list(lst):
    # Define a lambda function that takes a string as input and uses a regular expression to extract the float value of the string
    key = lambda x: float(re.search(r"(\d+\.\d+)", x).group())
    # Use the sorted function to sort the input list using the lambda function as the key
    return sorted(lst, key=key)
 
# Test the function
lst = ['2.5 %', '6.4 %', '91.6 %', '11.5 %']
print(sort_percentage_list(lst))
#This code is contributed by Edula Vinay Kumar Reddy


Output

['2.5 %', '6.4 %', '11.5 %', '91.6 %']

The regular expression r”(\d+\.\d+)” will match and extract any float value in the string. For example, it will match ‘2.5’ in the string ‘2.5 %’. The group() method of the Match object returned by re.search() will then return the matched

Time complexity: O(nlogn)

Auxiliary Space: O(1)

Dominic
Dominichttp://wardslaus.com
infosec,malicious & dos attacks generator, boot rom exploit philanthropist , wild hacker , game developer,
RELATED ARTICLES

Most Popular

Dominic
32250 POSTS0 COMMENTS
Milvus
81 POSTS0 COMMENTS
Nango Kala
6617 POSTS0 COMMENTS
Nicole Veronica
11792 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11840 POSTS0 COMMENTS
Shaida Kate Naidoo
6732 POSTS0 COMMENTS
Ted Musemwa
7014 POSTS0 COMMENTS
Thapelo Manthata
6689 POSTS0 COMMENTS
Umr Jansen
6703 POSTS0 COMMENTS