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

Hyp*_*ion 5 python sorting dictionary list

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

lst = [
  {'id': 1, 'language': 'it'},
  {'id': 2, 'language': 'en'},
  {'id': 3, 'language': 'es'},
  {'id': 4, 'language': 'en'}
  ]
Run Code Online (Sandbox Code Playgroud)

我想移动language != 'en'列表末尾的每个字典,同时保持其他结果的顺序.所以列表应该如下所示:

lst = [ 
  {'id': 2, 'language': 'en'},
  {'id': 4, 'language': 'en'},
  {'id': 1, 'language': 'it'},
  {'id': 3, 'language': 'es'}
  ]
Run Code Online (Sandbox Code Playgroud)

Ash*_*ary 12

使用排序.想法是要判断是否等于'language'.如果语言等于,'en'那么键函数将返回Falseelse True(False< 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'}]
Run Code Online (Sandbox Code Playgroud)

  • 你可以添加它的工作原理,因为python排序是_stable_ (2认同)