0

I have the following dictionary, sorted ascendingly by value.

>>> x = {'foo': 2.01, 'bar': 4.11, 'qux':3.2, 'ail':1.2, 'dfa':0.03}
>>> sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1))
>>> sorted_x
[('dfa', 0.029999999999999999), ('ail', 1.2), ('foo', 2.0099999999999998), ('qux', 3.2000000000000002), ('bar', 4.1100000000000003)]

How can I do sort it descendingly by value? I tried this but prints nothing

>>> sorted_x.reverse()
>>> 
neversaint
  • 60,904
  • 137
  • 310
  • 477

3 Answers3

3

You can use the reverse=True when you're sorting:

>>> sorted(x.iteritems(), key=operator.itemgetter(1), reverse=True)

[('bar', 4.11), ('qux', 3.2), ('foo', 2.01), ('ail', 1.2), ('dfa', 0.03)]
Lipis
  • 21,388
  • 20
  • 94
  • 121
1
In [143]:

import operator
x = {'foo': 2.01, 'bar': 4.11, 'qux':3.2, 'ail':1.2, 'dfa':0.03}
sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1), reverse=True)
sorted_x
Out[143]:
[('bar', 4.11), ('qux', 3.2), ('foo', 2.01), ('ail', 1.2), ('dfa', 0.03)]
EdChum
  • 376,765
  • 198
  • 813
  • 562
1

Try this:

>>> x = {'foo': 2.01, 'bar': 4.11, 'qux':3.2, 'ail':1.2, 'dfa':0.03}
>>> sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1), reverse=True)
>>> sorted_x
[('bar', 4.11), ('qux', 3.2), ('foo', 2.01), ('ail', 1.2), ('dfa', 0.03)]
turnt
  • 3,235
  • 5
  • 23
  • 39