Sort by nested dictionary in Python dictionary

I have below structure

{ 'searchResult' : [{ 'resultType' : 'station', 'ranking' : 0.5 }, { 'resultType' : 'station', 'ranking' : 0.35 }, { 'resultType' : 'station', 'ranking' : 0.40 } ] } 

and want to get

 { 'searchResult' : [{ 'resultType' : 'station', 'ranking' : 0.5 }, { 'resultType' : 'station', 'ranking' : 0.4 }, { 'resultType' : 'station', 'ranking' : 0.35 } ] } 

Tried code without success

 result = sorted(result.items(), key=lambda k: k[1][0][1]["ranking"], reverse=True) 
+5
source share
3 answers

If you change objects in place.

 a = { 'searchResult' : [{ 'resultType' : 'station', 'ranking' : 0.5 }, { 'resultType' : 'station', 'ranking' : 0.35 }, { 'resultType' : 'station', 'ranking' : 0.40 }] } a["searchResult"].sort(key=lambda d: d["ranking"], reverse=True) 

Or you can make a deep copy to keep the original

 from copy import deepcopy srt_dict = deepcopy(a) srt_dict["searchResult"].sort(key=lambda d: d["ranking"], reverse=True) 
+5
source

You can simply do an inplace sort on the list using key=itemgetter("ranking") and reverse=True :

 from operator import itemgetter d["searchResult"].sort(key=itemgetter("ranking"),reverse=True) print(d) {'searchResult': [{'resultType': 'station', 'ranking': 0.5}, {'resultType': 'station', 'ranking': 0.4}, {'resultType': 'station', 'ranking': 0.35}]} 
+5
source

You can simply sort the list and write over yourself in the dictionary.

 result = { 'searchResult' : [{ 'resultType' : 'station', 'ranking' : 0.5 }, { 'resultType' : 'station', 'ranking' : 0.35 }, { 'resultType' : 'station', 'ranking' : 0.40 } ] } result['searchResult'] = sorted(result['searchResult'], key= lambda x: x['ranking'], reverse=True) 
+2
source

All Articles