按特定键的降序对字典列表进行排序

cod*_*nja 5 python python-3.x

例如,我在python中有一个字典列表

[{'a':3, 'b':4, 'c':5, 'd':'6'}, {'a':1, 'b':2, 'c':7, 'd':'9'}]
Run Code Online (Sandbox Code Playgroud)

我想根据'c'的值按降序排序.我尝试使用sorted()方法key = lambda但没有帮助.

有任何想法吗??

mgi*_*son 17

有很多方法可以写这个.在你对lambdas感到满意之前,最好的办法是明确地写出来:

def sort_key(d):
    return d['c']

sorted(list_of_dict, key=sort_key, reverse=True)
Run Code Online (Sandbox Code Playgroud)

训练有素的眼睛将看到这与以下单行相同:

sorted(list_of_dict, key=lambda d: d['c'], reverse=True)
Run Code Online (Sandbox Code Playgroud)

或者,可能:

from operator import itemgetter
sorted(list_of_dict, key=itemgetter('c'), reverse=True)
Run Code Online (Sandbox Code Playgroud)


小智 5

import operator
list_of_dicts.sort(key=operator.itemgetter('c'), reverse=True)
Run Code Online (Sandbox Code Playgroud)

  • 赞成票。但也要提到 `reverse=True`,因为 OP 要求顺序是降序 (2认同)