2017-02-21 92 views
4

我已經詞典列表如下:的Python - 移動在詞典列表元素添加到列表的末尾

lst = [ 
    {'id': 1, 'language': 'it'}, 
    {'id': 2, 'language': 'en'}, 
    {'id': 3, 'language': 'es'}, 
    {'id': 4, 'language': 'en'} 
    ] 

我想移動每一個具有language != 'en'到列表的末尾詞典同時保持其他結果的順序。所以列表應該看起來像:

lst = [ 
    {'id': 2, 'language': 'en'}, 
    {'id': 4, 'language': 'en'}, 
    {'id': 1, 'language': 'it'}, 
    {'id': 3, 'language': 'es'} 
    ] 

回答

10

使用排序。想法是排序是否等於'language'或不。如果語言等於'en'那麼鍵功能將返回False否則TrueFalse < True)。由於Python的排序穩定,訂單將被保留。

>>> sorted(lst, key=lambda x: x['language'] != 'en') 
[{'id': 2, 'language': 'en'}, 
{'id': 4, 'language': 'en'}, 
{'id': 1, 'language': 'it'}, 
{'id': 3, 'language': 'es'}] 
+2

您可以添加,它的作品,因爲蟒蛇排序是_stable_ –

+0

@讓FrançoisFabre是的,我是在編輯它的中間。 :-) –