如何对此列表进行排序?
问题描述:
我有一个这样的名单:如何对此列表进行排序?
li = [
{
'name': 'Lee',
'age': 22
},
{
'name': 'Mike',
'age': 34
},
{
'name': 'John',
'age': 23
}
]
我想用排序法sorted
列表,和排序的age
关键
如何实现的呢?
答
的Python3相当于@kojiro表明这是什么
>>> 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'}]
碰巧的是'如果你让sorted'会做到这一点含蓄它使用它的默认值。 – kojiro
@kojiro:我们可能不应该依赖这一点。请参阅Python 2.7文档的[本节](http://docs.python.org/2.7/reference/expressions.html#not-in);在Python 3中,比较失败并伴有TypeError。 – DSM