如何按照字典中的值对Python字典列表进行排序?
我该如何根据特定键的值对字典列表进行排序?假设有这样一个列表:
[{'name': 'Homer', 'age': 39}, {'name': 'Bart', 'age': 10}]
当根据 name
排序时,它应该变成:
[{'name': 'Bart', 'age': 10}, {'name': 'Homer', 'age': 39}]
22 个回答
121
my_list = [{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]
my_list.sort(lambda x,y : cmp(x['name'], y['name']))
现在,my_list
就是你想要的结果。
或者更好一点:
从 Python 2.4 开始,新增了一个 key
参数,这样做更高效,也更整洁:
my_list = sorted(my_list, key=lambda k: k['name'])
...在我看来,使用 lambda 比 operator.itemgetter
更容易理解,不过每个人的感受可能不同。
240
import operator
要按照字典中的'name'这个键来排序列表:
list_of_dicts.sort(key=operator.itemgetter('name'))
要按照字典中的'age'这个键来排序列表:
list_of_dicts.sort(key=operator.itemgetter('age'))
3650
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)