Сортировка списка словарей в порядке величины одного из ключей в dict

a=[{'post': 3, 'value': 42}, {'post': 4, 'value': 12}, {'post': 12, 'value': 25}]

Как я могу сортировать его по этому вопросу:

a=[{'post': 3, 'value': 42}, {'post': 12, 'value': 25}, {'post': 4, 'value': 12}]

Я имею в виду, чтобы оценивать с обратным.

Вы можете использовать key и reverse аргументы:

 result = sorted(a, key=lambda d:d["value"], reverse=True) 

key должен быть функцией, которая задает элемент списка, возвращает значение, по которому должна выполняться сортировка. В этом случае переданная функция представляет собой анонимную функцию, которая при задании словаря возвращает значение, связанное с ключом "value" .

Обратите внимание: sorted(x) возвращает отсортированную копию списка. Если вы хотите отсортировать список на месте, вы можете просто вызвать метод sort объекта списка, передающего те же параметры. Отметим также, что x = sorted(x) не эквивалентен x.sort() .

Надеюсь, это по-прежнему считается разумным Python, даже если содержит уродливого монстра «лямбда» … 🙂

 a=[{'post': 3, 'value': 42}, {'post': 4, 'value': 12}, {'post': 12, 'value': 25}] a.sort(key=lambda d: -d['value']) 
 >>> from operator import itemgetter >>> a= [{'post': 3, 'value': 42}, {'post': 12, 'value': 25}, {'post': 4, 'value': 12}] >>> sorted(a, key=itemgetter('value'), reverse=True) [{'post': 3, 'value': 42}, {'post': 12, 'value': 25}, {'post': 4, 'value': 12}]