Python | Sort list containing alphanumeric values

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.

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    # 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))

    chevron_right

    
    

    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.

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    # 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))

    chevron_right

    
    

    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
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    # 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))

    chevron_right

    
    

    Output:

    [0, 3, 5, 7, 'e', 'g', 'k', 't']
    
  • Method #2 : lambda
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    # 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))

    chevron_right

    
    

    Output:

    [0, 3, 5, 7, 'e', 'g', 'k', 't']
    


My Personal Notes arrow_drop_up


If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : ManasChhabra2



Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.