Python | Sort list containing alphanumeric values
Last Updated :
09 May, 2023
Given a list containing both alphanumeric values, write a Python program to sort the given list in such a way that the alphabetical values always comes after numeric values. Examples:
Input : ['k', 5, 'e', 3, 'g', 7, 0, 't']
Output : [0, 3, 5, 7, 'e', 'g', 'k', 't']
Input : [1, 'c', 3, 2, 'a', 'b']
Output : [1, 2, 3, 'a', 'b', 'c']
Approach 1 : Using sort() method To use Python sort() method we need to convert all list values to str type first. Now there are two methods to convert values to string.
- Method #1 : List comprehension Python list comprehension can be simply used to convert each element of list to string type. We sort it and since all values are now str type, we change the final list to back to its original form.
Python3
# Python3 program to Sort list
# containing alpha and numeric values
def sort(lst):
lst = [str(i) for i in lst]
lst.sort()
lst = [int(i) if i.isdigit() else i for i in lst ]
return lst
# Driver code
lst = ['k', 5, 'e', 3, 'g', 7, 0, 't']
print(sort(lst))
Output:[0, 3, 5, 7, 'e', 'g', 'k', 't']
- Method #2 : Using key function Key function serves as a key for the sort comparison, which is equal to str in our case.
Python3
# Python3 program to Sort list
# containing alpha and numeric values
def sort(lst):
lst.sort(key = str)
return lst
# Driver code
lst = ['k', 5, 'e', 3, 'g', 7, 0, 't']
print(sort(lst))
Output:[0, 3, 5, 7, 'e', 'g', 'k', 't']
Approach 2 : sorted() Alternatively, you can also use Python's in-built function sorted() for the same purpose. Simplest difference between sort() and sorted() is: sort() doesn't return any value while, sorted() returns an iterable list. Now there are again two ways of using sorted().
- Method #1 : Using key function
Python3
# Python3 program to Sort list
# containing alpha and numeric values
def sort(lst):
return sorted(lst, key = str)
# Driver code
lst = ['k', 5, 'e', 3, 'g', 7, 0, 't']
print(sort(lst))
Output:[0, 3, 5, 7, 'e', 'g', 'k', 't']
Python3
# Python3 program to Sort list
# containing alpha and numeric values
def sort(lst):
return sorted(lst, key = lambda x: (isinstance(x, str), x))
# Driver code
lst = ['k', 5, 'e', 3, 'g', 7, 0, 't']
print(sort(lst))
Output:[0, 3, 5, 7, 'e', 'g', 'k', 't']
Approach#3:Using two lists and concatenation
Algorithm
1. Create two new lists: one for integers and one for strings.
2. Iterate through the original list.
3. For each element in the original list, check if it is a string or integer.
4. If it is a string, append it to the string list.
5. If it is an integer, append it to the integer list.
6. Sort both the integer and string lists.
7. Concatenate the integer and string lists together to create the final result list.
8. Return the final result list.
Python3
def sort_alphanumeric(input_list):
int_list = []
str_list = []
for i in input_list:
if isinstance(i, str):
str_list.append(i)
else:
int_list.append(i)
int_list = sorted(int_list)
str_list = sorted(str_list)
result_list = int_list + str_list
return result_list
input_list = ['k', 5, 'e', 3, 'g', 7, 0, 't']
print(sort_alphanumeric(input_list))
Output[0, 3, 5, 7, 'e', 'g', 'k', 't']
Time Complexity: O(n log n) for the sorted() function.
Space Complexity: O(n) for the int_list and str_list.
Approach#4: Using numpy
Algorithm:
Convert the input list to a numpy array using np.array() function.
Create a boolean mask array which checks whether each element of the array is of str or int type using np.char.isnumeric() function and logical not operator.
Sort the two subcontaining non-numeric elements, using np.sort() function.
Concatenate the two sorted sub-arrays using np.concatenate() function to obtain the final sorted array.
Convert the final sorted array to list using tolist() method.
Approach#4: Using Regular Expression
Algorithm
Create two empty lists, one for integers and one for strings.
Iterate through the original list.
Convert each element to a string using str().
Use regular expressions to check if the string matches a pattern for integer or string.
If the string matches the integer pattern, append it to the integer list.
If the string matches the string pattern, append it to the string list.
Sort both the integer and string lists.
Concatenate the integer and string lists together to create the final result list.
Return the final result list.
Python3
#Python3
import re
def sort_alphanumeric(input_list):
int_list = []
str_list = []
for i in input_list:
s = str(i)
if re.match(r'^\d+$', s):
int_list.append(int(s))
else:
str_list.append(s)
int_list = sorted(int_list)
str_list = sorted(str_list)
result_list = int_list + str_list
return result_list
input_list = ['k', 5, 'e', 3, 'g', 7, 0, 't']
print(sort_alphanumeric(input_list))
Output[0, 3, 5, 7, 'e', 'g', 'k', 't']
Time Complexity: O(n log n) for the sorted() function.
Auxiliary Space: O(n) for the int_list and str_list.
Similar Reads
Python - Sort Dictionary key and values List
Sometimes, while working with Python dictionaries, we can have a problem in which we need to perform the sorting of it, wrt keys, but also can have a variation in which we need to perform a sort on its values list as well. Let's discuss certain way in which this task can be performed. Input : test_d
6 min read
Python - Sort List by Dictionary values
Sometimes while working with a Python dictionary, we can have problems in which we need to perform a sort of list according to the corresponding value in the dictionary. This can have applications in many domains, including data and web development. Let's discuss certain ways in which this task can
3 min read
How to Sort a List Alphabetically in Python?
Sorting lists alphabetically is a common task in Python, whether we're organizing names, cleaning data or building an interface. Python makes sorting easy with several built-in methods and libraries for both simple and advanced sorting needs.Let's look at some of the most common methods one by one:U
2 min read
Sort a List of Python Dictionaries by a Value
Sorting a list of dictionaries by a specific value is a common task in Python programming. Whether you're dealing with data manipulation, analysis, or simply organizing information, having the ability to sort dictionaries based on a particular key is essential. In this article, we will explore diffe
3 min read
Python | Sort dictionary by value list length
While working with Python, one might come to a problem in which one needs to perform a sort on dictionary list value length. This can be typically in case of scoring or any type of count algorithm. Let's discuss a method by which this task can be performed. Method 1: Using sorted() + join() + lambda
4 min read
Sorting Python Dictionary With Lists as Values
Python offers various methods to sort a dictionary with Lists as Values. This is a common task when dealing with data where you need to order elements based on different criteria. In this article, we will sort a dictionary with lists as values in Python. Sort a Dictionary with Lists as Values in Pyt
3 min read
Python | Alternate Sort in String list
Sometimes, while working with Python list, we can have a problem in which we need to perform sorting only of alternatively in list. This kind of application can come many times. Let's discuss certain way in which this task can be performed. Method : Using join() + enumerate() + generator expression
2 min read
Python | Arrange Tuples consecutively in list
Sometimes, while working with tuple list, we may require a case in which we require that a tuple starts from the end of previous tuple, i.e the element 0 of every tuple should be equal to ending element of tuple in list of tuple. This type of problem and sorting is useful in competitive programming.
3 min read
Python - Sort Dictionary by Values and Keys
Given a dictionary, sort according to descended values, if similar values, then by keys lexicographically. Input : test_dict = {"gfg" : 1, "is" : 1, "best" : 1, "for" : 1, "geeks" : 1} Output : {"best" : 1, "is" : 1, "for" : 1, "geeks" : 1, "gfg" : 1} Explanation : All values are equal, hence lexico
3 min read
Sort a Nested Dictionary by Value in Python
Sorting a nested dictionary in Python involves understanding its structure, defining sorting criteria, and utilizing the `sorted()` function or `.sort()` method with a custom sorting function, often a lambda. This process is essential for organizing complex, hierarchical data efficiently. Mastery of
3 min read