Python Tutorial (33) – Example: Sorting a dictionary by key or value

Time: Column:Python views:211

Sorting a Dictionary by Keys or Values

In Python, dictionaries can be sorted by either keys or values. Below are examples demonstrating how to sort a dictionary using different methods.

Example 1: Sorting by Keys

def dictionairy():  
    # Declare dictionary
    key_value = {}     

    # Initialize values
    key_value[2] = 56       
    key_value[1] = 2 
    key_value[5] = 12 
    key_value[4] = 24
    key_value[6] = 18      
    key_value[3] = 323 

    print("Sorting by keys:")   

    # Sorted by keys
    for i in sorted(key_value): 
        print((i, key_value[i]), end=" ") 

def main(): 
    dictionairy()              

if __name__ == "__main__":      
    main()

Output:

Sorting by keys:
(1, 2) (2, 56) (3, 323) (4, 24) (5, 12) (6, 18)

Example 2: Sorting by Values

def dictionairy():  
    # Declare dictionary
    key_value = {}     

    # Initialize values
    key_value[2] = 56       
    key_value[1] = 2 
    key_value[5] = 12 
    key_value[4] = 24
    key_value[6] = 18      
    key_value[3] = 323 

    print("Sorting by values:")   
    print(sorted(key_value.items(), key=lambda kv: (kv[1], kv[0])))     

def main(): 
    dictionairy()             

if __name__ == "__main__":       
    main()

Output:

Sorting by values:
[(1, 2), (5, 12), (6, 18), (4, 24), (2, 56), (3, 323)]

Example 3: Sorting a List of Dictionaries

lis = [
    {"name": "Taobao", "age": 100},  
    {"name": "Runoob", "age": 7}, 
    {"name": "Google", "age": 100}, 
    {"name": "Wiki", "age": 200}
]

# Sorting by age (ascending)
print("Sorting by age (ascending):")
print(sorted(lis, key=lambda i: i['age']))

print("\r")

# Sorting by age and then by name
print("Sorting by age and name:")
print(sorted(lis, key=lambda i: (i['age'], i['name'])))

print("\r")

# Sorting by age (descending)
print("Sorting by age (descending):")
print(sorted(lis, key=lambda i: i['age'], reverse=True))

Output:

Sorting by age (ascending):
[{'name': 'Runoob', 'age': 7}, {'name': 'Taobao', 'age': 100}, {'name': 'Google', 'age': 100}, {'name': 'Wiki', 'age': 200}]

Sorting by age and name:
[{'name': 'Runoob', 'age': 7}, {'name': 'Google', 'age': 100}, {'name': 'Taobao', 'age': 100}, {'name': 'Wiki', 'age': 200}]

Sorting by age (descending):
[{'name': 'Wiki', 'age': 200}, {'name': 'Taobao', 'age': 100}, {'name': 'Google', 'age': 100}, {'name': 'Runoob', 'age': 7}]