2017-02-21 7 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

あなたはPythonのソートがジャンFrançoisFabreうん@ –

+0

_stable_あるので、それが動作することを追加することができ、私はそれを編集の真ん中にありました。 :-) –

関連する問題