You are currently viewing Python String Sort Alphabetically

How to sort the letters in a string alphabetically in Python? To sort a string alphabetically, you can use the built-in sorted() function or convert the string to a list of characters and then use the sort() method. Keep in mind that strings are immutable, so you need to convert them to a list before sorting.

You can sort a string alphabetically in Python using many ways, for example, by using sorted() & join(), sorted() & accumulate(), sorted() + join() + lambda, naive, and sorted() & reduce() functions. In this article, I will explain how to sort the string alphabetically by using all these methods with examples.

1. Quick Examples of Sorting a String Alphabetically

If you are in a hurry, below are some quick examples of how to sort the letters in a string alphabetically.


# Quick examples of string sort alphabetically

from itertools import accumulate
from functools import reduce

# Initialize the string
string = "SPARK"

# Example 1: Using sorted() and join() methods
# Sort letters of string alphabetically
def sortString(string):
    return ''.join(sorted(string))    
sorted_string = sortString(string)

# Example 2: Using sorted() and accumulate() methods
# Sort letters of string alphabetically
def sortString(string):
    return tuple(accumulate(sorted(string)))[-1]   
sorted_string = sortString(string)

# Example 3: Using sorted() and join() methods
# Sort letters of string alphabetically
def sortString(string):
    return "".join(sorted(string, key = lambda x:x.lower()))  
sorted_string = sortString(string)

# Example 4: Using sorted() and reduce() methods
# Sort letters of string alphabetically
def sortString(string):
    return reduce(lambda a, b : a + b, sorted(string)) 
sorted_string = sortString(string)

# Example 5: Using naive method
# Sort letters of string alphabetically
li = []
l = len(string)
for i in range (0,l):
    li.append(string[i])
for i in range(0,l):
    for j in range(0,l):
        if li[i]<li[j]:
            li[i],li[j]=li[j],li[i]
result=""
for i in range(0,l):
    result = result+li[i]

2. Sort String Alphabetically Using sorted() and join() Methods

You can sort the letters of a string alphabetically using the sorted() and join() methods. For example, first, you can initialize a string “SPARK”, then define a function sortString to sort the letters of the string alphabetically using the sorted() function. Finally, it calls the function with the input string and prints the sorted string.


# Initialize the string
string = "SPARK"
print("Original string:",string)

# Using sorted() and join() methods
# Sort letters of string alphabetically
def sortString(string):
    return ''.join(sorted(string))    
sorted_string = sortString(string)
print("After sorting a string alphabetically:",sorted_string)

Yields below output.

python string sort alphabetically

This function takes the input string “SPARK” and returns the sorted string “AKPRS” since ‘A’ comes before ‘K’ before ‘P’, and so on.

3. Using sorted() and accumulate() Methods

You can also sort the letters of a string alphabetically using the sorted() and accumulate() methods from the itertools module. The sorted() function sorts the characters of the input string string alphabetically, resulting in a sorted list of characters.

The accumulate() function from itertools returns an iterator that calculates the accumulated values from the input iterable (the sorted list of characters in this case). In this context, it essentially accumulates the sorted characters into a tuple. The tuple() function is used to convert the accumulated values (which are returned as an iterator) into a tuple. Finally, [-1] is used to access the last element of the tuple, which corresponds to the sorted string.


from itertools import accumulate

# Initialize the string
string = "SPARK"
print("Original string:",string)

# Using sorted() and accumulate() methods
# Sort letters of string alphabetically
def sortString(string):
    return tuple(accumulate(sorted(string)))[-1]   
sorted_string = sortString(string)
print("After sorting a string alphabetically:",sorted_string)

Yields the same output as above.

4. Using sorted() + join() + Lambda Methods

Alternatively, You can use the sorted() method along with the join() & lambda method to sort the letters of a string alphabetically, with a slight modification. It uses the key parameter of the sorted() function to sort the characters in a case-insensitive manner.

In the below example, the sorted() function sorts the characters of the input string string alphabetically. The key parameter is set to a lambda function lambda x: x.lower() which converts each character to its lowercase form before sorting. The join() method then, joins the sorted characters back into a string, resulting in the alphabetically sorted string with case-insensitive sorting.


from itertools import accumulate

# Initialize the string
string = "SPARK"
print("Original string:",string)

# Using sorted() and join() methods
# Sort letters of string alphabetically
def sortString(string):
    return "".join(sorted(string, key = lambda x:x.lower()))  
sorted_string = sortString(string)
print("After sorting a string alphabetically:",sorted_string)

Yields the same output as above.

5. Using sorted() and reduce() Methods

Another way to sort the letters of string alphabetically, using sorted() method. In this example, this function works with the reduce() function from the functools module and gives the desired output.

First, the sorted() function sorts the characters of the input string string alphabetically and then returns them as a list. After that, The reduce() function is used with a lambda function lambda a,b:a+b to concatenate the elements of the sorted list together, finally, resulting in a single string.


from functools import reduce

# Initialize the string
string = "SPARK"
print("Original string:",string)

# Using sorted() and reduce() methods
# Sort letters of string alphabetically
def sortString(string):
    return reduce(lambda a, b : a + b, sorted(string)) 
sorted_string = sortString(string)
print("After sorting a string alphabetically:",sorted_string)

Yields the same output as above.

6. Using Naive Method

Finally, You can use a naive method to sort the letters of a string alphabetically, which involves iterating through the characters of the string and comparing them to sort them in ascending order. One way to achieve this is by using nested loops.


# Initialize the string
string = "SPARK"
print("Original string:",string)

# Using naive method
# Sort letters of string alphabetically
li = []
l = len(string)
for i in range (0,l):
    li.append(string[i])

for i in range(0,l):
    for j in range(0,l):
        if li[i]<li[j]:
            li[i],li[j]=li[j],li[i]
result=""

for i in range(0,l):
    result = result+li[i]
print("After sorting a string alphabetically:",result)

Yields the same output as above.

Conclusion

In this article, I have explained how to sort a string alphabetically in Python by using sorted() & join(), sorted() & accumulate(), sorted() + join() + lambda, naive, and sorted() & reduce() functions with examples.

Happy Learning !!