# Sort a Python dictionary

A Python dictionary is a kind of set and doesn't essentially have an order. But it can be regarded as a list of tuples, and in fact, the sorted() sorts all items of a dictionary by ascending or descending and returns a sorted list.

stocks = {'Square': 136, 'Apple': 112, 'Facebook': 275}

a = sorted(stocks.items())
b = sorted(stocks.items(), reverse=True)

print(a)
# [('Apple', 112), ('Facebook', 275), ('Square', 136)]

print(b)
# [('Square', 136), ('Facebook', 275), ('Apple', 112)]


The sorted() returns a list, not dictionary. The second argument (reverse) decides the order.

Let's check the changes of "keys" or company names order.

After sorting, company names are alphabetized. Be cautious of the argument of the sorted(). If the first argument is a dictionary itself, it returns the list of keys.

stocks = {'Square': 136, 'Apple': 112, 'Facebook': 275}

a = sorted(stocks)

print(a)


## Sort a Python dictionary by value using lambda expression

From Python 3, it's possible to sort a dictionary using a lambda expression.

a = {'book': 97, 'pen': 145, 'note': 314}
b = sorted(a.items(), key=lambda x: x)
c = sorted(a.items(), key=lambda x: x, reverse=True)

print(b)  # [('book', 97), ('pen', 145), ('note', 314)]
print(c)  # [('note', 314), ('pen', 145), ('book', 97)]


The sorted() returns pairs of a dictionary's key and value. With reverse true, it sorts by descending.