Python - 将字典列表中的元素移动到列表的末尾

时间:2017-02-21 10:20:06

标签: python list sorting dictionary

我有一个这样的词典列表:

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'}
  ]

1 个答案:

答案 0 :(得分:11)

使用排序。想法是排序是否等于'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'}]