如何根据Python中字典的值对字典列表进行排序?

我收到了一个字典列表,并希望按字典的值进行排序。

这个

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

按名称排序,应该成为

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

它可能看起来更清洁使用一个键,而不是一个cmp:

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

或者像JFSebastian和其他人所建议的那样,

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

为了完整性(正如fitzgeraldsteele的评论中指出的那样),添加reverse=True来降序排序

newlist = sorted(l, key=itemgetter('name'), reverse=True)

import operator

按键='名称'对字典列表进行排序:

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

按键='年龄'对字典列表进行排序:

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

如果您想通过多个键对列表进行排序,您可以执行以下操作:

my_list = [{'name':'Homer', 'age':39}, {'name':'Milhouse', 'age':10}, {'name':'Bart', 'age':10} ]
sortedlist = sorted(my_list , key=lambda elem: "%02d %s" % (elem['age'], elem['name']))

这很冒险,因为它依赖于将值转换为单个字符串表示形式进行比较,但它对包含负数的数字的预期效果(尽管如果使用数字,您将需要适当地使用零填充格式化字符串)

链接地址: http://www.djcxy.com/p/1907.html

上一篇: How do I sort a list of dictionaries by values of the dictionary in Python?

下一篇: How do you detect Credit card type based on number?