我有一个这样的词典列表:
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'}
]
答案 0 :(得分:11)
使用排序。想法是排序是否等于'language'
。如果语言等于'en'
,则键功能将返回False
其他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'}]