How to Sort an Integer in Python


Let’s say that you have an integer with value of 9271 and you want to sort it either ascending(1279) or descending(9721).

How would you do this in Python? How would you sort an integer in either ascending or descending order?

Sorting our integer

Let’s set our integer to n:

n = 9271

Now let’s sort it:

sorted([i for i in str(n)])

# This will give us a list in ascending order
# ['1', '2', '7', '9']

We can as easily do it the other way:

sorted([i for i in str(n)], reverse=True)

# This will give us a list in descending order
# ['9', '7', '2', '1']

How do we convert our sorted list back to an integer?

s = sorted([i for i in str(n)], reverse=True)
int("".join(s))

# 9721

But can we do this in a single line? Yes!

descending = int("".join(sorted([i for i in str(n)], reverse=True)))

print(descending)

# 9721

Ready-made functions to sort integers

If you just want a quick copy/paste, then you can use these functions to sort an integer in python:

def sort_asc(n):
  return int("".join(sorted([i for i in str(n)])))

def sort_desc(n):
  return int("".join(sorted([i for i in str(n)], reverse=True)))

Using our ready-made functions

And here is how to use these functions in how to sort an integer using python:

print(sort_asc(473829))
# 234789

print(sort_desc(473829))
# 987432
def sort_asc(n):
  return int("".join(sorted([i for i in str(n)])))

def sort_desc(n):
  return int("".join(sorted([i for i in str(n)], reverse=True)))

print(sort_asc(473829))
# 234789

print(sort_desc(473829))
# 987432