How to Sort a Dictionary by Value in Python

I have implemented the sorting of dictionary using the for loop and lambda function using the Test Driven Data / TDD approach.
Here is the simple code.

"""
@Author: Aseem Jain
@Github: https://github.com/premaseem/pythonLab/tree/master/challenge

Sort map/dictionary by keys and values

"""

def sol(m):
s_k ={}
s_v ={}
# On 1
for k in sorted(m.keys()):
s_k[k] = m.get(k)

for v in sorted(m.values()):
for k in m:
if v == m.get(k):
s_v[k] = v

return (s_k,s_v)

def sol1(m):
s_k_t = sorted(m.items(),key=lambda i:i[0])
s_v_t = sorted(m.items(),key=lambda i:i[1])

s_k_m = {}
for k,v in s_k_t: s_k_m[k]=v

s_v_m = {}
for k,v in s_v_t: s_v_m[k]=v

return (s_k_m,s_v_m)

def sol2(m):
s_k_t = sorted(m.items(),key=lambda i:i[0])
s_v_t = sorted(m.items(),key=lambda i:i[1])
def tuple_to_map(t):
new_m = {}
for k,v in t:
new_m[k]=v
return new_m
return (tuple_to_map(s_k_t),tuple_to_map(s_v_t))

# Test with given map and expected sorted values
map = { 3:15, 0:10, 5:50, 7:25 }
sorted_key = { 0:10, 3:15, 5:50, 7:25 }
sorted_values = { 5:50, 7:25, 0:10, 3:15}

test_data = [
(map, (sorted_key,sorted_values) )
]

for given, expected in test_data:
assert sol(given) == expected
assert sol1(given) == expected
print(f"Test passed for: given {given} and expected = {expected}")

This site uses Akismet to reduce spam. Learn how your comment data is processed.