DEV Community

Cover image for Sorting in Python
Deepjyoti Barman
Deepjyoti Barman

Posted on

Sorting in Python

Python has a lot of applications, from chatbots to API's, we have a module for almost everything. But in order to get the most out of it, we should know the basics. One of the basic things in a language that is used almost every now and then is sorting. Here's how to use sorting in Python using the prebuilt methods.

Options

  1. sorted()
  2. .sort()

sorted()

The method that even the Python docs suggest is sorted. Under the hood, Python uses timsort.

Timsort is a hybrid sorting algorithm, derived from merge sort and insertion sort, designed to perform well on many kinds of real-world data.
[Here's] a better explanation.

The method takes just a few arguments.

sorted(iterable, *, key=None, reverse=False)
Enter fullscreen mode Exit fullscreen mode

It's pretty straightforward to understand the arguments.

iterable

Iterable is any datatype that can be iterated or looped over. Python currently supports tuple, list, or dictionaries.

d = [1, 2, 3, 4, 5]

# Sort using the sorted method
d = sorted(d)
Enter fullscreen mode Exit fullscreen mode

key

Key is a function that takes one argument. Each element that is got while iterating over the iterable is passed as an argument to this function.

The return value of this function is used to compare where the passed arguments position should be.

The default value is None.

d = [
  [2, "second"],
  [3, "third"],
  [-1, "first"]
]

# Function to return the zeroth element in each
# object
def getzeroth(el):
    return el[0]

# Sort the dictionary by using the 0th
# element in each object.
d = sorted(d, key=getzeroth)
Enter fullscreen mode Exit fullscreen mode

NOTE: We can also use a lambda function instead of defining a whole function.

# Sort using the zeroth element using a lambda
# function
d = sorted(d, key=lambda x: x[0])
Enter fullscreen mode Exit fullscreen mode

reverse

This argument just takes a bool as argument and the default value is False. If True is passed then the result will be reversed, i:e the iterable will be sorted in descending order.

d = [1, 2, 3]

# Make the list reverse ordered
d = sorted(d, reverse=True)
Enter fullscreen mode Exit fullscreen mode

.sort()

The sort method sorts the list in place. It is a method of the list class itself so it takes one argument less than sorted. Just like sorted this method uses Timsort under the hood.

This method is usually simpler to use with lists.

The arguments passed are:

sort(*, key=None, reverse=False)
Enter fullscreen mode Exit fullscreen mode

Just like sorted we can pass key and reverse in this method as well.

d = [1, 5,27, 89, -90]

# Sort the list using .sort
d.sort()
Enter fullscreen mode Exit fullscreen mode

This article was aimed at those who are new to Python or even advanced Python programmers but need some kind of a bookmarkable post to look at the sorting methods in Python.

I also write at my personal site https://deepjyoti30.github.io/ about Python, technology and other stuff. Do check it out.

Top comments (0)