I know that this problem has been discussed, but none of the answers refer to a string as a key. I would like to sort a dictionary by a value - descending and ascending. Here are my sketches:
def ascending(d):
from operator import itemgetter
sorted(d.items(), key=itemgetter(1))
return d
f={'a': 2, 'c': 1, 'f': 5, 'e': 4}
g={'s': 3, 'y': 1, 'r': 7, 'h': 4}
print(hj(f))
def descending(d):
from operator import itemgetter
sorted(d.items(), key=itemgetter(1), reverse=True)
return d
print(jh(g))
However, I get:
{'a': 2, 'c': 1, 'f': 5, 'e': 4}
{'h': 4, 'r': 7, 'y': 1, 's': 3}
What am I doing wrong? How can I improve the code?
OK, a little ask for explanation: I have solved problem, using:
def ascending(d):
from operator import itemgetter
p=sorted(d.items(), key=itemgetter(1))
return p
f={'a': 2, 'c': 1, 'f': 5, 'e': 4}
g={'s': 3, 'y': 1, 'r': 7, 'h': 4}
print(hj(f))
def descending(d):
from operator import itemgetter
p=sorted(d.items(), key=itemgetter(1), reverse=True)
return p
print(jh(g))
How does sorted() works, if it doesn't affected d in 'return d'?