为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

BIG阳 2019-05-29 17:20:46
如何按字典值对字典列表进行排序?我有一个字典列表,并希望每个项目按特定的属性值排序。考虑下面的数组,[{'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'))


查看完整回答
反对 回复 2019-05-29
?
幕布斯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,因为它依赖于将值转换为单个字符串表示以进行比较,但它对于包含负数的数字的预期工作(尽管如果使用数字,您将需要使用零填充来适当地格式化字符串)


查看完整回答
反对 回复 2019-05-29
?
慕尼黑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.itemgetterYMMV 更容易理解。


查看完整回答
反对 回复 2019-05-29
  • 4 回答
  • 0 关注
  • 2992 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信