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 the code without success
result = sorted(result.items(), key=lambda k: k[1][0][1]["ranking"], reverse=True)
If you are okay with changing the 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)
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}]}
You can just sort the list and write over itself 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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With