我有一個這樣的名單:如何對此列表進行排序?
li = [
{
'name': 'Lee',
'age': 22
},
{
'name': 'Mike',
'age': 34
},
{
'name': 'John',
'age': 23
}
]
我想用排序法sorted
列表,和排序的age
關鍵
如何實現的呢?
我有一個這樣的名單:如何對此列表進行排序?
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