Home > Back-end >  Dictionary order from the value
Dictionary order from the value

Time:05-28

list1 = ['AMZN', 'CACC', 'EQIX', 'GOOG', 'ORLY', 'ULTA']
list2 = [[12.81, 11.09, 12.11, 10.93, 9.83, 8.14], [10.34, 10.56, 10.14, 12.17, 13.10,11.22], [12.81, 11.09, 12.11, 10.93, 9.83, 8.14]]
m = [sum(i) for i in zip(*list2)]

culo = []
for ss in m:
    culo.append(ss/3)

zip_iterator = zip(list1, culo)
a_dictionary = dict(zip_iterator)
print(a_dictionary)

Hello everyone, do you have any clue how to order the dictionary "a_dictionary" in biggest number to the smallest from the value?

CodePudding user response:

You can use a dictionary comprehension using sorted(), passing in a key parameter to sort by value, and a reverse parameter to sort in descending order:

{k: v for k, v in sorted(a_dictionary.items(), key=lambda x: x[1], reverse=True)}

This outputs:

{
 'AMZN': 11.986666666666666,
 'EQIX': 11.453333333333333,
 'GOOG': 11.343333333333334,
 'ORLY': 10.92,
 'CACC': 10.913333333333332,
 'ULTA': 9.166666666666666
}

CodePudding user response:

I will go a simpler looking solution:

m = ....
culo = [ (ss/3, l1) for ss, l1 in zip(m, list1)]
print(sorted(culo, reverse=True))

returns:

[(9.166666666666666, 'ULTA'),
 (10.913333333333332, 'CACC'),
 (10.92, 'ORLY'),
 (11.343333333333334, 'GOOG'),
 (11.453333333333333, 'EQIX'),
 (11.986666666666666, 'AMZN')]
  • Related