如何按字典值对字典列表进行排序?我有一个字典列表,并希望每个项目按特定的属性值排序。考虑下面的数组,[{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]排序时name,应该成为[{'name':'Bart', 'age':10}, {'name':'Homer', 'age':39}]
4 回答
倚天杖
TA贡献1828条经验 获得超3个赞
import operator
要按key ='name'对字典列表进行排序:
list_of_dicts.sort(key=operator.itemgetter('name'))
按键='年龄'对字典列表进行排序:
list_of_dicts.sort(key=operator.itemgetter('age'))
幕布斯6054654
TA贡献1876条经验 获得超7个赞
如果要按多个键对列表进行排序,可以执行以下操作:
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']))
它相当hackish,因为它依赖于将值转换为单个字符串表示以进行比较,但它对于包含负数的数字的预期工作(尽管如果使用数字,您将需要使用零填充来适当地格式化字符串)
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
my_list = [{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]my_list.sort(lambda x,y : cmp(x['name'], y['name']))
my_list
现在将成为你想要的。
(3年后)编辑补充:
新key
论点更有效,更整洁。现在更好的答案如下:
my_list = sorted(my_list, key=lambda k: k['name'])
...... lambo,IMO,比operator.itemgetter
YMMV 更容易理解。
添加回答
举报
0/150
提交
取消