Saturday, September 21, 2024
Google search engine
HomeLanguagesPython sorted() Function

Python sorted() Function

Python sorted() function returns a sorted list. It is not only defined for the list, it accepts any iterable.

Example

Python3




print(sorted([4, 1, 3, 2]))


Output

[1, 2, 3, 4]

Python sorted() Function Syntax

Syntax: sorted(iterable, key, reverse)

Parameters: sorted takes three parameters from which two are optional. 

  • Iterable: sequence (list, tuple, string) or collection (dictionary, set, frozenset) or any other iterator that needs to be sorted.
  • Key(optional): A function that would serve as a key or a basis of sort comparison.
  • Reverse(optional): If True, then the iterable would be sorted in reverse (descending) order, by default it is set as False.

Return: Returns a list with elements in sorted order.

Sorted() Function in Python Examples

Sorting a Python list using sorted()

In this example, we have applied sorted on the Python list.

Python3




x = [2, 8, 1, 4, 6, 3, 7]
 
print("Sorted List returned :", sorted(x))
 
print("Reverse sort :", sorted(x, reverse=True))
 
print("\nOriginal list not modified :", x)


Output :

Sorted List returned : [1, 2, 3, 4, 6, 7, 8]
Reverse sort : [8, 7, 6, 4, 3, 2,0 1]
Original list not modified : [2, 8, 1, 4, 6, 3, 7]

Sorting different data types with Sorted()

In this example, we have used sorted() on different datatypes like list, tuple, string, dictionary, set, and frozen set.

Python3




# List
x = ['q', 'w', 'r', 'e', 't', 'y']
print(sorted(x))
 
# Tuple
x = ('q', 'w', 'e', 'r', 't', 'y')
print(sorted(x))
 
# String-sorted based on ASCII translations
x = "python"
print(sorted(x))
 
# Dictionary
x = {'q': 1, 'w': 2, 'e': 3, 'r': 4, 't': 5, 'y': 6}
print(sorted(x))
 
# Set
x = {'q', 'w', 'e', 'r', 't', 'y'}
print(sorted(x))
 
# Frozen Set
x = frozenset(('q', 'w', 'e', 'r', 't', 'y'))
print(sorted(x))


Output :

['e', 'q', 'r', 't', 'w', 'y']
['e', 'q', 'r', 't', 'w', 'y']
['h', 'n', 'o', 'p', 't', 'y']
['e', 'q', 'r', 't', 'w', 'y']
['e', 'q', 'r', 't', 'w', 'y']
['e', 'q', 'r', 't', 'w', 'y']

Reverse sorting using Python sorted()

Sorting a string in lexicographically reverse order by setting reverse=True in the sorted() function.

Python3




# Python3 code to demonstrate
# Reverse Sort a String
# using join() + sorted() + reverse
   
# initializing string
test_string = "geekforLazyroar"
   
# printing original string
print("The original string : " + str(test_string))
   
# using join() + sorted() + reverse
# Sorting a string
res = ''.join(sorted(test_string, reverse = True))
       
# print result
print("String after reverse sorting : " + str(res))


Output :

The original string : geekforLazyroar
String after reverse sorting : srokkggfeeee

Python Sorted() with lambda

Using sorted() inside the Python lambda function.

Python3




import functools
test_string = "geekforLazyroar"
 
print("The original string : " + str(test_string))
# using sorted() + reduce() + lambda
res = functools.reduce(lambda x, y: x + y,
                       sorted(test_string,
                              reverse=True))
print("String after reverse sorting : " + str(res))


Output :

The original string : geekforLazyroar
String after reverse sorting : srokkggfeeee

Sorted() in Python with len()

In this example, we are sorting the list based on its length. The string of the smallest length should come first.

Python3




L = ["cccc", "b", "dd", "aaa"]
print("Normal sort :", sorted(L))
print("Sort with len :", sorted(L, key=len))


Output :

Normal sort : ['aaa', 'b', 'cccc', 'dd']
Sort with len : ['b', 'dd', 'aaa', 'cccc']

The key can also take user-defined functions as its value for the basis of sorting.

Python3




# Sort a list of integers based on
# their remainder on dividing from 7
def func(x):
    return x % 7
 
L = [15, 3, 11, 7]
 
print("Normal sort :", sorted(L))
print("Sorted with key:", sorted(L, key=func))


Output :

Normal sort : [3, 7, 11, 15]
Sorted with key: [7, 15, 3, 11]

Sorting a list in ascending order with sorted()

In Example,1 we have a list of integer values. We then use the sorted function to sort the list in ascending order. The sorted function takes the iterable to be sorted as its first argument and returns a new list that contains the sorted elements.

In example 2, we have a string. We then use the sorted function to sort the characters in the string in ascending order. The sorted function treats the string as an iterable of characters and returns a new list that contains the sorted characters.

In example 3, we have a list of tuples that contains integers and strings. We have used the sorted function to sort the list based on the second element of each tuple. To achieve this we have passed a lambda function as the key argument to the sorted function.

Python3




my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5]
sorted_list = sorted(my_list)
print(sorted_list) 
 
my_string = "hello, world!"
sorted_string = sorted(my_string)
print(sorted_string) 
 
my_tuples = [(1, "one"), (3, "three"), (2, "two"), (4, "four")]
sorted_tuples = sorted(my_tuples, key=lambda x: x[1])
print(sorted_tuples)


Output :

[1, 1, 2, 3, 4, 5, 5, 6, 9]
[' ', '!', ',', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
[(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]

Sorting a List of Dictionaries by a Specific Key using Sorted()

In this example, we are sorting the list of dictionaries with a specific key.

Python3




students = [
    {'name': 'John', 'age': 20},
    {'name': 'Alice', 'age': 18},
    {'name': 'Bob', 'age': 22}
]
sorted_students = sorted(students,key=lambda x: x['age'])
print(sorted_students)


Output :

[{'name': 'Alice', 'age': 18}, {'name': 'John', 'age': 20}, {'name': 'Bob', 'age': 22}]

Sorting a List of Custom Objects

In this example, we are creating a custom class named Person with two instance variables name and age and we are creating three objects of the Person class and inserting objects into lists. We are using the Sorted Function which sorting the Person’s objects.

Python3




class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
 
    def __repr__(self):
        return f"Person(name='{self.name}', age={self.age})"
 
 
people = [
    Person('John', 25),
    Person('Alice', 18),
    Person('Bob', 30)
]
sorted_people = sorted(people, key=lambda x: x.age)
print(sorted_people)


Output :

[Person(name='Alice', age=18), Person(name='John', age=25), Person(name='Bob', age=30)]

RELATED ARTICLES

Most Popular

Recent Comments