# You can use a lambda function, but you'll have to specify the index of the sorting key.
A = [[100, 'Yes'], [40, 'Maybe'], [60, 'No']]
print("Sorted List A based on index 0: % s" % (sorted(A, key=lambda x:x[0])))
B = [[2, 'Dog'], [0, 'Bird'], [7, 'Cat']]
print("Sorted List A based on index 1: % s" % (sorted(B, key=lambda x:x[1])))
# Also, you can use .sort() if you want to sort just by the first index
A = [[55, 90], [45, 89], [90, 70]]
A.sort()
print("New sorted list A is % s" % (A))
A.sort(reverse=True)
print("New reverse sorted list A is % s" % (A))
# You can even change the key sort, if you want to sort by length for example:
A = [[5, 90, 'Hi', 66], [80, 99], [56, 32, 80]]
A.sort(key=len) # <-
print("New sorted list A is % s" % (A))
# sort() will change the original list into a sorted list
vowels = ['e', 'a', 'u', 'o', 'i']
vowels.sort()
# Output:
# ['a', 'e', 'i', 'o', 'u']
# sorted() will sort the list and return it while keeping the original
sortedVowels = sorted(vowels)
# Output:
# ['a', 'e', 'i', 'o', 'u']
Python .sort() / .sorted()
.sort() Sort modifies the list directly.
names = ["Xander", "Buffy", "Angel", "Willow", "Giles"]
names.sort()
print(names)
# ['Angel', 'Buffy', 'Giles', 'Willow', 'Xander']
.sort() also provides us the option to go in reverse easily.
Instead of sorting in ascending order, we can do so in descending order.
names = ["Xander", "Buffy", "Angel", "Willow", "Giles"]
names.sort(reverse=True)
print(names)
# ['Xander', 'Willow', 'Giles', 'Buffy', 'Angel']
.sorted() generates a new list instead of modifying
one that already exists.
names = ["Xander", "Buffy", "Angel", "Willow", "Giles"]
sorted_names = sorted(names)
print(sorted_names)
# ['Angel', 'Buffy', 'Giles', 'Willow', 'Xander']
from operator import itemgetter
A = [[10, 8], [90, 2], [45, 6]]
print("Sorted List A based on index 0: % s" % (sorted(A, key=itemgetter(0))))
B = [[50, 'Yes'], [20, 'No'], [100, 'Maybe']]
print("Sorted List B based on index 1: % s" % (sorted(B, key=itemgetter(1))))
"""Sort in ascending and descending order"""
list_test = [2, 1, 5, 3, 4]
#ascending is by default for sort
#Time Complexity: O(nlogn)
list_test.sort()
#For descending order
#Time Complexity: O(nlogn)
list_test.sort(reverse=True)
#For user-define order
list_test.sort(key=..., reverse=...)
data_list = [-5, -23, 5, 0, 23, -6, 23, 67]
new_list = []
while data_list:
minimum = data_list[0] # arbitrary number in list
for x in data_list:
if x < minimum:
minimum = x
new_list.append(minimum)
data_list.remove(minimum)
print new_list
# Sort with an inner object
# Here it will sort with "book_no"
# [
# {
# "key": "book-key-1",
# "book_no": 1,
# "name": "My Book Name 1"
# },
# {
# "key": "book-key-2",
# "book_no": 2,
# "name": "My Book Name 2"
# }
# ]
def sortOnNumber(e):
return e['book_no']
@app.get('/getBooks')
def getBooks():
res = next(booksDb.fetch())
res.sort(key=sortOnNumber)
if res:
return res
raise HTTPException(404,"Not found")