如何按字典值对字典列表进行排序?

如何按字典值对字典列表进行排序?

我有一个字典列表,并希望每个项目按特定的属性值排序。

考虑下面的数组,

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

排序时name,应该成为

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


BIG阳
浏览 3002回答 4
4回答

倚天杖

import operator要按key ='name'对字典列表进行排序:list_of_dicts.sort(key=operator.itemgetter('name'))按键='年龄'对字典列表进行排序:list_of_dicts.sort(key=operator.itemgetter('age'))

幕布斯6054654

如果要按多个键对列表进行排序,可以执行以下操作: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

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.itemgetterYMMV 更容易理解。
打开App,查看更多内容
随时随地看视频慕课网APP