The sorted()
method sorts the elements of the given iterable in ascending order and returns it.
Example
numbers = [4, 2, 12, 8]
# sort the list in ascending order
sorted_numbers = sorted(numbers)
print(sorted_numbers)
# Output: [2, 4, 8, 12]
Here, we created a new list to store the sorted list. This is because sorted()
doesn't sort the given iterable, it creates a new list with sorted elements.
sorted() Syntax
sorted(iterable)
Here, the iterable can be any sequence we want to sort, such as list, tuple, string, dictionary, set, frozen set, etc.
sorted() Parameters
By default, sorted()
takes only a single parameter - iterable.
Along with the iterable, the sorted()
method also has two optional parameters: reverse and key.
sorted(iterable, key = …, reverse = …)
Here,
- key - function that determines the basis for sort comparison. Default value -
None
- reverse - boolean that decides the sorting order. If
True
, the list is sorted in descending order
sorted() Return Value
The method returns a sorted list.
Example: Sort a List in Ascending Order
# list of vowels in random order
vowels_list = ['e', 'a', 'u', 'o', 'i']
# sort the vowels
print('Sorted Vowels:', sorted(vowels_list))
# Output: Sorted Vowels: ['a', 'e', 'i', 'o', 'u']
Sorting a list
numbers = [3,2,7,5,9,11]
print(sorted(numbers))
# Output: [2, 3, 5, 7, 9, 11]
Sorting a tuple
numbers = (4,2,1,6,8,15)
print(sorted(numbers))
# Output: [1, 2, 4, 6, 8, 15]
Sorting a dictionary
dict = {1: 'one', 2: 'two', 3: 'three'}
print(sorted(dict))
# Output: [1, 2, 3]
Sorting a set
my_set = {'u', 'i', 'o', 'a', 'e'}
print(sorted(my_set))
# Output: ['a', 'e', 'i', 'o', 'u']
Sort in Descending Order
We can use an optional reverse parameter to sort the list in descending order. For example,
numbers = [2, 7, 3, 9, 13, 11]
# sorting the numbers in descending order
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers)
# Output: [13, 11, 9, 7, 3, 2]
Here, sorted(iterable, reverse = True)
sorts the list in descending order.
Sorting With the Key Function
The sorted()
method accepts another optional parameter- the key function. For example,
sorted(iterable, key = len)
Here, len is Python's built-in function that counts the length of an element.
In this case, the sorted()
method sorts the list based on the length of the element. For example,
fruits = ['apple', 'banana', 'kiwi', 'pomegranate']
# sorts the list based on the length of each string
sorted_fruits = sorted(fruits, key=len)
print('Sorted list:', sorted_fruits)
# Output: Sorted list: ['kiwi', 'apple', 'banana', 'pomegranate']
Note: The list is sorted based on the length of the element, from the lowest count to the highest.
More on Python sorted()
The sorted()
method takes elements from the original list and returns a new list with sorted elements. The original list remains unchanged. For example,
numbers = [3, 1, 4, 1, 5, 9, 2, 5, 3]
# sort using sorted() method
sorted_numbers = sorted(numbers)
print("Using sorted():", sorted_numbers)
print("Original list:", numbers)
Output
Using sorted(): [1, 1, 2, 3, 3, 4, 5, 5, 9] Original list: [3, 1, 4, 1, 5, 9, 2, 5, 3]
The sort()
method modifies the original list directly and does not return any values. For example,
numbers = [3, 1, 4, 1, 5, 9, 2, 5, 3]
# sort using sort() method
numbers.sort()
print("Using sort():", numbers)
# Output: Using sort(): [1, 1, 2, 3, 3, 4, 5, 5, 9]
To learn more, visit Python sort().
We can also use user-defined functions as the key function. For example,
# take age from each element
def get_age(person):
return person[1]
# list of tuple
personal_info = [("Alice", 25), ("Bob", 30), ("Charlie", 22)]
# sort the list based on age
sorted_personal_info= sorted(personal_info, key=get_age)
print(sorted_personal_info)
# Output: [('Charlie', 22), ('Alice', 25), ('Bob', 30)]
In the above example, the personal_info is a list of tuples where the get_age
function is defined as a key function.
Here, the list is sorted based on the age
(i.e., second element) of each tuple.
We can use both key and reverse parameters for sorting the list. For example,
words = ['python', 'is', 'awesome', 'and', 'fun']
# sort list on the basis of length in descending order
sorted_words= sorted(words, key=len, reverse=True)
print(sorted_words)
# Output: ['awesome', 'python', 'and', 'fun', 'is']
Also Read: