2017-02-21 94 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是的,我是在编辑它的中间。 :-) –