Sorting
Function sorted()
works on any iterable - strings, tuples, dictionaries (you'll get the keys), generators, etc. Returns a new list.
Order a simple list of numbers or strings:
my_numbers = [6, 1, 3]
my_ordered_numbers = sorted(my_numbers)
my_reversely_ordered_numbers = sorted(my_numbers, reverse=True)
Order a list of dicts by dict key:
from operator import itemgetter
new_list = sorted(my_list, key=itemgetter('key_to_sort_by'))
new_list = sorted(my_list, key=itemgetter('key_1', 'key_2')) # sort by multiple keys
# or use lambda
new_list = sorted(my_list, key=lambda d: d['key_to_sort_by'])
new_list = sorted(my_list, key=lambda d: (d['key_1'], d['key_2'])) # sort by multiple keys
If you need additional magic to be done with the dict values during sorting which is to complex for a lambda:
def do_magic(d):
my_complex_result = d["some_key"].lower() # lambda would do too for this, just for showcasing
return my_complex_result
my_ordered_list = sorted(my_list, key=do_magic) # orders list by return values of do_magic
Method sort()
Works the same way as sorted()
but only on lists. Changes the existing list. Usable on a string but it will return an ordered list of individual characters.
a.sort(key=lambda d : d['key_to_sort_by'])
Note: print(a.sort()) won't print anything as the sort method returns None. Print the list after applying sort.