Python, Sorting Object Array


How to Sort Object Array In Python?

Python provides a built-in method called sort to sort an array. It provides an option to specify the order of the sort.

# Python3.8
# Sorting Array in Ascending Order
lst = [-1,200,1,100,50]
lst.sort()
print(lst)

# Output
# [-1, 1, 50, 100, 200]

Note: Sort method doesn’t return a new Array, instead it modifies the same.

To sort array in descending order you can specify reverse parameter to True.

# Python3.8
# Sorting Array in Descending Order
lst = [-1,200,1,100,50]
lst.sort(reverse=True)
print(lst)

# Output
# [200, 100, 50, 1, -1]

Sorting Object Array Using Python

Array might not always have numeric data. Most of the time for data coming from REST APIs, it will be object arrays. You can specify a function to the sort method to pick the value based on which the object needs to be sorted.

# Python3.8
# Sorting Object Array in Ascending Order

def customSort(k):
    return k['value']

lstObj = [{'value' : -1},{'value' : 200},{'value' : 1},{'value' : 100},{'value' : 50}]
lstObj.sort(key=customSort)
print(lstObj)

# Output
# [{'value': -1}, {'value': 1}, {'value': 50}, {'value': 100}, {'value': 200}]

As seen in the above code, customSort method has been passed as key to the sort method. Set the reverse parameter to True to sort Array object in descending order.

# Python3.8
# Sorting Object Array in Descending Order

def customSort(k):
    return k['value']

lstObj = [{'value' : -1},{'value' : 200},{'value' : 1},{'value' : 100},{'value' : 50}]
lstObj.sort(key=customSort, reverse=True)
print(lstObj)

# Output
# [{'value': 200}, {'value': 100}, {'value': 50}, {'value': 1}, {'value': -1}]