如何按特定键的值对词典列表进行排序?鉴于:

[{'name': 'Homer', 'age': 39}, {'name': 'Bart', 'age': 10}]

按名称排序时,应为:

[{'name': 'Bart', 'age': 10}, {'name': 'Homer', 'age': 39}]

当前回答

a = [{'name':'Homer', 'age':39}, ...]

# This changes the list a
a.sort(key=lambda k : k['name'])

# This returns a new list (a is not modified)
sorted(a, key=lambda k : k['name']) 

其他回答

import operator
a_list_of_dicts.sort(key=operator.itemgetter('name'))

“key”用于按任意值排序,“itemgetter”将该值设置为每个项的“name”属性。

sorted()函数接受key=参数

newlist = sorted(list_to_be_sorted, key=lambda d: d['name']) 

或者,您可以使用operator.itemgetter而不是自己定义函数

from operator import itemgetter
newlist = sorted(list_to_be_sorted, key=itemgetter('name')) 

为完整起见,添加reverse=True以降序排序

newlist = sorted(list_to_be_sorted, key=itemgetter('name'), reverse=True)
my_list = [{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]

my_list.sort(lambda x,y : cmp(x['name'], y['name']))

my_list现在将是您想要的。

或者更好:

自从Python2.4以来,有一个关键的论点更高效、更整洁:

my_list = sorted(my_list, key=lambda k: k['name'])

…lambda比operator.itemgetter更容易理解,但您的里程数可能会有所不同。

import operator

要按key='name'对词典列表进行排序:

list_of_dicts.sort(key=operator.itemgetter('name'))

要按key='age'对词典列表进行排序,请执行以下操作:

list_of_dicts.sort(key=operator.itemgetter('age'))

我猜你的意思是:

[{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]

其排序如下:

sorted(l,cmp=lambda x,y: cmp(x['name'],y['name']))