Вы также можете использовать itemgetter
.
from operator import itemgetter
sorted(l,key=itemgetter('worth'))
[{'id': 242730576195354624, 'worth': 0.0},
{'id': 659311972990451712, 'worth': 0.0},
{'id': 365975655608745985, 'worth': 0.0},
{'id': 472141928578940958, 'worth': 0.0},
{'id': 270904126974590976, 'worth': 0.0},
{'id': 280497242714931202, 'worth': 0.0},
{'id': 432610292342587392, 'worth': 0.0},
{'id': 408785106942164992, 'worth': 0.0},
{'id': 622692428213780481, 'worth': 0.0},
{'id': 651499863736844298, 'worth': 0.02},
{'id': 400900758444310528, 'worth': 0.04},
{'id': 602213380274651400, 'worth': 0.06},
{'id': 610603160301469715, 'worth': 0.17}]
Чтобы получить 5 самых больших значений, попробуйте это.
top_five=sorted(l,key=itemgetter('worth'))[-5:][::-1]
[{'id': 610603160301469715, 'worth': 0.17},
{'id': 602213380274651400, 'worth': 0.06},
{'id': 400900758444310528, 'worth': 0.04},
{'id': 651499863736844298, 'worth': 0.02},
{'id': 622692428213780481, 'worth': 0.0}]
Если Вы хотите отсортировать на месте, а затем использовать метод .sort()
с key=itemgetter('worth')
l.sort(key=itemgetter('worth')) # .sort() doen't return None. And it modifies the same list.
Если вы сортируете, чтобы получить только первые 5 самых больших, то. Использование heapq
не требует сортировки.
from heapq import nlargest
top_five=nlargest(5,l,key=itemgetter('worth'))
[{'id': 610603160301469715, 'worth': 0.17},
{'id': 602213380274651400, 'worth': 0.06},
{'id': 400900758444310528, 'worth': 0.04},
{'id': 651499863736844298, 'worth': 0.02},
{'id': 242730576195354624, 'worth': 0.0}]