我有一个这样的清单:
li = [
{
'name': 'Lee',
'age': 22
},
{
'name': 'Mike',
'age': 34
},
{
'name': 'John',
'age': 23
}
]
我想用sorted
方法对列表进行排序,然后按age
键排序
如何实现它?
答案 0 :(得分:8)
使用key function:
li_sorted = sorted(li, key=lambda x: x['age'])
答案 1 :(得分:1)
与@kojiro建议相同的Python3是
>>> sorted(li, key=lambda x:sorted(x.items()))
[{'age': 22, 'name': 'Lee'}, {'age': 23, 'name': 'John'}, {'age': 34, 'name': 'Mike'}]
显然,这比
效率低>>> sorted(li, key=lambda x:x['age'])
[{'age': 22, 'name': 'Lee'}, {'age': 23, 'name': 'John'}, {'age': 34, 'name': 'Mike'}]
反正。还有一个好处是它不依赖于'age' < 'name'
以下是使用itemgetter
>>> from operator import itemgetter
>>> sorted(li, key=itemgetter('age'))
[{'age': 22, 'name': 'Lee'}, {'age': 23, 'name': 'John'}, {'age': 34, 'name': 'Mike'}]