按dict值对dict列表排序

2024-03-29 10:43:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字典列表:

[{'title':'New York Times', 'title_url':'New_York_Times','id':4},
 {'title':'USA Today','title_url':'USA_Today','id':6},
 {'title':'Apple News','title_url':'Apple_News','id':2}]

我想按标题排序,所以在Z之前加一个go的元素:

[{'title':'Apple News','title_url':'Apple_News','id':2},
 {'title':'New York Times', 'title_url':'New_York_Times','id':4},
 {'title':'USA Today','title_url':'USA_Today','id':6}]

最好的方法是什么? 此外,是否有方法确保每个字典键的顺序保持不变,例如,始终为title、title\u url,然后为id?


Tags: 方法idurl标题apple列表newtoday
3条回答

当兰姆达斯靠近打喷嚏的人时,低过敏性的替代品是:

import operator
L.sort(key=operator.itemgetter('title','title_url','id'))

在列表中调用.sort(fn),其中fn是一个比较标题值并返回比较结果的函数。

mylist.sort(lambda x,y: cmp(x['title'], y['title']))

不过,在Python的更高版本(2.4+)中,最好使用排序键:

mylist.sort(key=lambda x:x['title'])

此外,如果您要遍历键/值,只要没有更多的添加/删除,字典就可以保证保持它们的顺序。但是,如果您添加或删除项目,则所有下注都将关闭,这是无法保证的。

l.sort(key=lambda x:x['title'])

要使用多个键进行排序,请假定所有键都按升序排列:

l.sort(key=lambda x:(x['title'], x['title_url'], x['id']))

相关问题 更多 >